2017-11-29 2 views
1

Ich habe ein Neustart-Skript überprüfen, die nach MW ausgeführt wird, muss ich nur den letzten Neustart ziehen, um zu überprüfen, die Server neu gestartet wurden, derzeit ziehen sie alle Neustart Geschichte. Unten ist mein Skript:Neustart-Überprüfung zeigt alle Neustarts nicht nur zuletzt

$DHCP = (Get-Content -Path "\\termserv\d$\SERVER1\SERVER2\Scripts\morescripts\DHCPServers.txt") 

foreach ($Server in $DHCP) { 
    Get-Service -ComputerName $Server -DisplayName "DHCP Server" | 
     ConvertTo-Html -Title "PScomputername" -Body "<H3> SERVER2 Uptime Report </H3> " -Property PSComputername >> \\termserv\d$\SERVER1\SERVER2\Server3\SERVER2.html 
    Get-Service -ComputerName $Server -DisplayName "DHCP Server" | 
     ConvertTo-Html -Property MachineName,Status,ServiceName | 
     foreach { 
      if ($_ -like "*<td>Running</td>*") { 
       $_ -replace "<tr>", "<tr bgcolor=green>" 
      } elseif ($_ -like "*<td>Stopped</td>*") { 
       $_ -replace "<tr>", "<tr bgcolor=red>" 
      } else { 
       $_ 
      } 
     } >> \\termserv\d$\SERVER1\SERVER2\Server3\SERVER2.html 
    Get-WmiObject win32_operatingsystem -ComputerName $Server | 
     Select PSComputername, @{n='BootTime';e={$_.ConvertToDateTime($_.LastBootupTime)}} | 
     ConvertTo-Html -Property PSComputerName,BootTime >> \\termserv\d$\SERVER1\SERVER2\Server3\SERVER2.html 
    ConvertTo-Html -Property PSComputerName,Installedon,Description,caption >> \\termserv\d$\SERVER1\SERVER2\Server3\SERVER2.html 
} 


$Print = (Get-Content -Path "\\termserv\d$\SERVER1\SERVER2\Scripts\morescripts\PrintServers.txt") 

foreach ($Server in $Print) { 
    Get-Service -ComputerName $Server -DisplayName "Print Spooler" | 
     ConvertTo-Html -Property MachineName,Status,ServiceName | 
     foreach { 
      if ($_ -like "*<td>Running</td>*") { 
       $_ -replace "<tr>", "<tr bgcolor=green>" 
      } elseif ($_ -like "*<td>Stopped</td>*") { 
       $_ -replace "<tr>", "<tr bgcolor=red>" 
      } else { 
       $_ 
      } 
     } >> \\termserv\d$\SERVER1\SERVER2\Server3\SERVER2.html 
    Get-WmiObject win32_operatingsystem -ComputerName $Server | 
     Select PSComputername, @{n='BootTime';e={$_.ConvertToDateTime($_.LastBootupTime)}} | 
     ConvertTo-Html -Property PSComputerName,BootTime >> \\termserv\d$\SERVER1\SERVER2\Server3\SERVER2.html 
    ConvertTo-Html -Property PSComputerName,Installedon,Description,caption >> \\termserv\d$\SERVER1\SERVER2\Server3\SERVER2.html 
} 
+0

Ich habe so gut wie möglich für bessere Lesbarkeit umformatiert. –

Antwort

0

Sie müssen nur mit einer berechneten Eigenschaft Sort-Object und dann Select-Object sagen das erste Element zu holen:

Get-WmiObject -ClassName Win32_OperatingSystem -ComputerName $Server | 
    Sort-Object -Property @{e={$_.ConvertToDateTime($_.LastBootupTime)}} -Descending | 
    Select-Object -First 1 -Property [...] | 
    ConvertTo-Html [...] 

Es soll beachtet werden, dass der endgültige ConvertTo-Html Anruf in jedem Haupt foreach Schleife hat nichts zu konvertieren, soweit ich das beurteilen kann. Sie erstellen ein leeres HTML-Dokument mit einer leeren Tabelle und hängen es an Ihre Datei an.

Außerdem hängen Sie mehrere HTML-Dokumente an die Datei server2.html an. Wenn sie sich in demselben Dokument befinden, sollten Sie die gesamte Datei mit <html><head><title /></head><body> starten, dann den Parameter -Fragment für alle Ihre -Aufrufe verwenden und schließlich das Dokument mit </body></html> schließen. Ihre aktuelle Methode funktioniert möglicherweise, aber Sie generieren ein explizit ungültiges HTML-Dokument. Ein Browser, der korrekt rendert, sollte nur die erste Tabelle anzeigen.

+0

Danke Bacon, ich habe es ein bisschen modifiziert und es hat super geklappt, dass du den grünen Check gewonnen hast – Slyons

Verwandte Themen