Windows-Uptime remote erfragen über WMI und Powershell

Der Task-Manager zeigt die seit dem letzten Boot-Vorgang verstrichene Zeit, allerdings nur für den lokalen Rechner.Manchmal möchte man wissen, wie lange ein Windows-Server bereits unterbrechungsfrei läuft, also wie viel Zeit seit dem letzten Boot-Vorgang verstrichen ist. Im Gegensatz zu Linux gehört zum Lieferumfang von Windows kein eigener Befehl für diesen Zweck. Allerdings gibt es verschiedene Möglichkeiten, diese Information auszulesen, und zwar auch remote.

Unter den gängigen Empfehlungen, wie man die Systemlaufzeit ermitteln kann, befindet sich stets der Hinweis auf systeminfo.exe. Das Kommandozeilen-Tool gibt eine Vielzahl von Daten aus, darunter auch das letzte Boot-Datum. Aus dem gesamten Output kann man es via find ausfiltern:

systeminfo| find /i "Systemstartzeit:"

Remote-Abfrage mit systeminfo

Dieses Vorgehen hat jedoch den Nachteil, dass systeminfo.exe ziemlich lange braucht, bis es alle Daten ermittelt hat. Aber immerhin funktioniert es auch remote, indem man den Schalter /s mit dem Namen des Computers verwendet, also beispielsweise:

systeminfo /s server-core| find /i "Systemstartzeit:"

Nur lokal: net statistics und Task-Manager

Flinker ist das auf Microsoft TechNet empfohlene net statistics. Auch hier muss man die eigentliche Information über einen find-Filter extrahieren:

net statistics server|find /i "Statistik seit"

Es fällt allerdings auf, dass das Ergebnis von net statistics von dem aller anderen Tools abweicht, zum Teil sogar um Tage. Außerdem funktioniert es nur lokal. Das gilt auch für den Task-Manager, der in der Registerkarte Leistung unter Laufzeit die seit dem letzten Boot-Vorgang verstrichene Zeit angibt.

Boot-Historie mit uptime.exe auflisten

Dagegen ist uptime.exe, das aus NT-Zeiten stammt und von Microsofts Website heruntergeladen werden kann, in der Lage, auch Daten von Remote-Computern einzusammeln. Im Gegensatz zu den anderen Tools zeigt es nicht das letzte Boot-Datum, sondern errechnet gleich die seitdem vergangene Zeit. Eine interessante Option bietet sich dabei mit dem Schalter /s, der Boot-Statistiken über einen längeren Zeitraum liefert und so eine gute Übersicht über die Verfügbarkeit einer Maschine ermöglicht.

uptime server-core /s

gibt Auskunft darüber, wann der Computer mit dem Namen server-core gestartet bzw. heruntergefahren wurde.

WMI-Abfrage mit wmic und Powershell

Die meisten der genannten Tools bedienen sich wahrscheinlich hinter den Kulissen eines WMI-Aufrufs, um an die geforderten Systemdaten zu kommen. Man kann WMI aber auch explizit nutzen, um die Uptime eines Servers zu ermitteln. Das geht beispielsweise über das Kommandozeilen-Tool wmic:

wmic /Node:"Computername" OS Get LastBootUpTime

Der Nachteil von wmic besteht darin, dass die Ausgabe des Datums und der Uhrzeit im Format yyyymmddhhmmss erfolgt und damit ziemlich unübersichtlich ist. Ruft man dagegen die Informationen über WMI in Powershell ab, dann hat man dort die Mittel, die Ausgabe anders zu formatieren:

$wmi=Get-WmiObject -computername srv -Class Win32_OperatingSystem
$wmi.converttodatetime($wmi.lastbootuptime)

Die Funktion converttodatetime gibt Datum und Uhrzeit nicht nur in einem besser lesbaren Format aus, sondern errechnet zusätzlich auch noch den Wochentag. Will man die Uptime eines entfernten Rechners erfragen, dann muss ihn über den Parameter -computername angeben. Die Powershell-Variante ist wie immer zu bevorzugen, wenn man die Ausgabe einer WMI-Abfrage in einem Script weiterverarbeiten will.

1 Kommentar

Bild von Peter Monadjemi

Gutes Beispiel, das sehr schön zeigt, dass sich in der PowerShell auch Tools verwenden lassen, mit denen Administratoren bereits seit Jahren arbeiten. Der Vorteil von PowerShell kommt immer dann ins Spiel, wenn der Output "objektorientiert" (sprich mit Cmdlets wie Select-Object oder Where-Object) weiterverarbeitet werden soll.

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt. Wenn mit der von Ihren angegebenen Mail-Adresse ein Gravatar verknüpft ist, dann wird dieser neben Ihrem Kommentar eingeblendet.
  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • Zulässige HTML-Tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Zeilen und Absätze werden automatisch erzeugt.
  • Mail-Adressen werden im Seitenquelltext unkenntlich gemacht, um sie vor dem automatischen Erfassen durch Spammer zu schützen.

Weitere Informationen über Formatierungsoptionen