Kuddel071089 9 Geschrieben 29. September 2016 Melden Teilen 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 Link zu diesem Kommentar
NorbertFe 2.097 Geschrieben 29. September 2016 Melden Teilen 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 Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 29. September 2016 Autor Melden Teilen 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 Link zu diesem Kommentar
NorbertFe 2.097 Geschrieben 29. September 2016 Melden Teilen Geschrieben 29. September 2016 Achso. Wir nutzen dafür unser Monitoring. Kann ich dir leider nicht weiterhelfen. Zitieren Link zu diesem Kommentar
testperson 1.729 Geschrieben 29. September 2016 Melden Teilen 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 Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 29. September 2016 Autor Melden Teilen 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 Link zu diesem Kommentar
Dukel 457 Geschrieben 29. September 2016 Melden Teilen Geschrieben 29. September 2016 CimInstanze ist neuer. Evtl. hilft eine neue Powershell Version auf den alten Systemen oder du nimmst Get-WMIObject. Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 29. September 2016 Autor Melden Teilen 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 Link zu diesem Kommentar
testperson 1.729 Geschrieben 29. September 2016 Melden Teilen 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 Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 29. September 2016 Autor Melden Teilen 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 Link zu diesem Kommentar
daabm 1.366 Geschrieben 3. Oktober 2016 Melden Teilen Geschrieben 3. Oktober 2016 Get-Date formatiert Dir Datumsangaben nahezu nach Belieben :) Zitieren Link zu diesem Kommentar
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.