Kuddel071089 9 Geschrieben 29. September 2016 Melden Geschrieben 29. September 2016 Hallo zusammen, ich bin gerade dabei ein SKript zu schreiben, welches mir von allen Server die Laufzeit ausgeben soll. Zwecks Windows Updates kann man dann sehen, ob die Server schon neugestartet sind. Mit Servern ab 2012 funktioniert meine Abfrage fehlerfrei, nur alles was älter ist (2008 / 2008R2) scheint nicht mit der Abfrage klar zu kommen: $servers = Get-ADComputer -filter {Name -like "*NTS*"} -Properties * | Sort "Servername;Beschreibung;Startzeit;Betriesbsystem" | Out-File C:\Laufzeiten.csv "" | Out-File C:\Laufzeiten.csv -Append foreach($server in $servers){ $bootzeit = Get-CimInstance Win32_OperatingSystem -Property LastBootUpTime -ComputerName $($server.name) -EA SilentlyContinue | Select LastBootUpTime $name = $($server.name) $beschreibung = ($server.Description) $bootzeit = $($bootzeit.LastBootUpTime) $os = $($server.OperatingSystem) "$name;$beschreibung;$bootzeit;$os" | Out-File C:\Laufzeiten.csv -Append } Jemand eine Idee, wie ich eine Abfrage für alle Server hinbekomme? Danke schon einmal Zitieren
NorbertFe 2.175 Geschrieben 29. September 2016 Melden Geschrieben 29. September 2016 Wenn Windows Updates einen reboot benötigen, kannst du das afair auch direkt abfragen, der Windows Update Agent meldet dann reboot pending. Zitieren
Kuddel071089 9 Geschrieben 29. September 2016 Autor Melden Geschrieben 29. September 2016 Wenn Windows Updates einen reboot benötigen, kannst du das afair auch direkt abfragen, der Windows Update Agent meldet dann reboot pending. Bei uns gibts es viele Server, die durch Serververantwortliche gebootet werden. Dieser Check soll nur der Prüfung dienen, ob die Server auch wirklich gebootet wurden Zitieren
NorbertFe 2.175 Geschrieben 29. September 2016 Melden Geschrieben 29. September 2016 Achso. Wir nutzen dafür unser Monitoring. Kann ich dir leider nicht weiterhelfen. Zitieren
testperson 1.761 Geschrieben 29. September 2016 Melden Geschrieben 29. September 2016 Eine GPO mit einem Computer-Shutdown-Script oder andersrum mit einem Start-Script? Aber ein entsprechendes Monitoring wäre wohl sinnvoller. Zitieren
Kuddel071089 9 Geschrieben 29. September 2016 Autor Melden Geschrieben 29. September 2016 Eine GPO mit einem Computer-Shutdown-Script oder andersrum mit einem Start-Script? Aber ein entsprechendes Monitoring wäre wohl sinnvoller. Forced-Shutdown ist keine Option, da die Serververantwortlichen meist besser entscheiden können, wann eine Downtime möglich ist. Ich habe es auch mit fogendem Befehl versucht: Invoke-Command -ComputerName $server -ScriptBlock {systeminfo | find "Systemstartzeit"} Funktioniert leider auch nicht Zitieren
Dukel 461 Geschrieben 29. September 2016 Melden Geschrieben 29. September 2016 CimInstanze ist neuer. Evtl. hilft eine neue Powershell Version auf den alten Systemen oder du nimmst Get-WMIObject. Zitieren
Kuddel071089 9 Geschrieben 29. September 2016 Autor Melden Geschrieben 29. September 2016 (bearbeitet) CimInstanze ist neuer. Evtl. hilft eine neue Powershell Version auf den alten Systemen oder du nimmst Get-WMIObject. Mit folgendem Befehl bekomme ich auch bei 2008er Servern ein vernünftiges Ergebnis Get-WmiObject win32_operatingsystem | select csname, @{LABEL=’LastBootUpTime’ ;EXPRESSION={$_.ConverttoDateTime($_.lastbootuptime)}} An sich ist das Ergebnis schonmal nicht schlecht. Hier einmal das Ganze Skript: cls $host.ui.RawUI.WindowTitle = "Laufzet v0.2" $servers = Get-ADComputer -filter {Name -like "*NTS*"} -Properties * | Sort "Servername;Startzeitpunkt;Beschreibung;Betriesbsystem" | Out-File C:\Laufzeiten.csv "" | Out-File C:\Laufzeiten.csv -Append foreach($server in $servers){ #$bootzeit = Get-WmiObject win32_operatingsystem -ComputerName $server.Name | select csname, @{LABEL='LastBootUpTime’ ;EXPRESSION={$_.ConverttoDateTime($_.lastbootuptime)}} -EA SilentlyContinue $zeit = Get-WmiObject win32_operatingsystem -ComputerName $server.Name | select @{LABEL='LastBootUpTime’ ;EXPRESSION={$_.ConverttoDateTime($_.lastbootuptime)}} -EA SilentlyContinue $name = $($server.name) $beschreibung = $($server.Description) $bootzeit = $($zeit.LastBootUpTime) $os = $($server.OperatingSystem) if($bootzeit -ne $null) { "$name;$bootzeit;$beschreibung;$os" | Out-File C:\Laufzeiten.csv -Append } else{ "$name;ABFRAGE NICHT MÖGLICH ;$beschreibung;$os" | Out-File C:\Laufzeiten.csv -Append } } Das einzige was mich jetzt noch stört, ist das ANzeigeformat des Datums. Mit deim reinen "Get-WmiObjcet" Befehl, bekomme ich das Datum immer im deutschen Format angezeigt. In meiner CSV-Datei ist es allerdings mal deutsch mal englisch, unabhänging vom Betriebssystem. Kann mir da jemand helfen ? bearbeitet 29. September 2016 von Kuddel071089 Zitieren
testperson 1.761 Geschrieben 29. September 2016 Melden Geschrieben 29. September 2016 Forced-Shutdown ist keine Option, da die Serververantwortlichen meist besser entscheiden können, wann eine Downtime möglich ist. Was willst du denn "forcen"? Ein Startup-Script welches beim Hochfahren des Computers z.B. "echo %time% %date% >> C:\Laufzeiten.txt" oder eben beim Runterfahren macht. Zitieren
Kuddel071089 9 Geschrieben 29. September 2016 Autor Melden Geschrieben 29. September 2016 Was willst du denn "forcen"? Ein Startup-Script welches beim Hochfahren des Computers z.B. "echo %time% %date% >> C:\Laufzeiten.txt" oder eben beim Runterfahren macht. Achso, da habe ich dich falsch verstanden. Ja okay, das wäre auch noch eine Möglichkeit, aber an sich kann ich mit meiner Abfrage schon arbeiten Zitieren
daabm 1.391 Geschrieben 3. Oktober 2016 Melden Geschrieben 3. Oktober 2016 Get-Date formatiert Dir Datumsangaben nahezu nach Belieben :) Zitieren
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.