Batch Systemlaufzeitabfrage
Hallo Administrator.de-Community,
ich habe eine Frage bezüglich einer Batch-Abfrage.
Kann man die Systemlaufzeit per Batch-Befehl abfragen und in einer Variable speichern? Und wenn ja, wie? Es geht hierbei um einen geplanten automatischen Serverrestart unserer Terminalserver. Ein 7-tägiger Reboot ist leider nicht möglich, weil wir die automatischen Reboots nach Windows-Updates aufgrund von Sicherheitsrichtlinien aktiviert haben müssen.
Vielen Dank vorab schonmal für eure Hilfe.
LG euer Phil
ich habe eine Frage bezüglich einer Batch-Abfrage.
Kann man die Systemlaufzeit per Batch-Befehl abfragen und in einer Variable speichern? Und wenn ja, wie? Es geht hierbei um einen geplanten automatischen Serverrestart unserer Terminalserver. Ein 7-tägiger Reboot ist leider nicht möglich, weil wir die automatischen Reboots nach Windows-Updates aufgrund von Sicherheitsrichtlinien aktiviert haben müssen.
Vielen Dank vorab schonmal für eure Hilfe.
LG euer Phil
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 316042
Url: https://administrator.de/forum/batch-systemlaufzeitabfrage-316042.html
Ausgedruckt am: 20.04.2025 um 17:04 Uhr
3 Kommentare
Neuester Kommentar
Moin Phil,
hier findest du verschiedene Varianten:
https://www.windowspro.de/wolfgang-sommergut/windows-uptime-remote-erfra ...
Beste Grüße!
Berthold
hier findest du verschiedene Varianten:
https://www.windowspro.de/wolfgang-sommergut/windows-uptime-remote-erfra ...
Beste Grüße!
Berthold
Hallo Phil,
hier noch eine Batchscript-Variante mit einem Inline-VBScript:
Wie schon im PowerShell-Schnipsel von Kraemer wird die WMI-Klasse
Der Wert der Eigenschaft
Mit Hilfe dieses Wertes kann in Zeile 10 mit der
In den Zeilen 12 bis 15 wird dieser Wert ins Format Tage, Stunden, Minuten und Sekunden umgerechnet. Diese Werte werden in den Zeilen 17 bis 20 durch Semikolons getrennt ausgegeben.
In den Zeilen 22 bis 32 sind mehrere Beispiele aufgeführt wie das VBScript verwendet werden kann, um die Uptime in unterschiedlicher Detailtiefe auszugeben.
Grüße
Friemler
hier noch eine Batchscript-Variante mit einem Inline-VBScript:
@echo off & setlocal
set "VBScript=%TEMP%\GetUptime.vbs"
> "%VBScript%" echo.Set objOS = GetObject("winmgmts:\\.\root\cimv2:Win32_OperatingSystem=@")
>>"%VBScript%" echo.Set objDateTime = CreateObject("WbemScripting.SWbemDateTime")
>>"%VBScript%" echo.
>>"%VBScript%" echo.objDateTime.Value = objOS.LastBootupTime
>>"%VBScript%" echo.datBootupTime = objDateTime.GetVarDate(True)
>>"%VBScript%" echo.intUptimeSeconds = DateDiff("s", datBootupTime, Now)
>>"%VBScript%" echo.
>>"%VBScript%" echo.intUptimeDays = Fix(intUptimeSeconds / 86400)
>>"%VBScript%" echo.intUptimeHours = Fix(intUptimeSeconds / 3600) Mod 24
>>"%VBScript%" echo.intUptimeMinutes = Fix(intUptimeSeconds / 60) Mod 60
>>"%VBScript%" echo.intUptimeSeconds = intUptimeSeconds Mod 60
>>"%VBScript%" echo.
>>"%VBScript%" echo.WScript.Echo intUptimeDays ^& ";" ^& _
>>"%VBScript%" echo. intUptimeHours ^& ";" ^&_
>>"%VBScript%" echo. intUptimeMinutes ^& ";" ^&_
>>"%VBScript%" echo. intUptimeSeconds
for /f "tokens=2-3 delims=;" %%a in ('cscript /nologo "%VBScript%"') do (
echo Uptime: %%a Stunden und %%b Minuten
)
for /f "tokens=1-3 delims=;" %%a in ('cscript /nologo "%VBScript%"') do (
echo Uptime: %%a Tage, %%b Stunden und %%c Minuten
)
for /f "tokens=1-4 delims=;" %%a in ('cscript /nologo "%VBScript%"') do (
echo Uptime: %%a Tage, %%b Stunden, %%c Minuten und %%d Sekunden
)
del "%VBScript%" > NUL
Wie schon im PowerShell-Schnipsel von Kraemer wird die WMI-Klasse
Win32_OperatingSystem
benutzt, um den Zeitpunkt des letzten System-Reboots zu bestimmen. Da Win32_OperatingSystem
eine sog. Singleton-Klasse ist, d.h. es gibt nur eine Instanz der Klasse weil es nur ein aktives OS auf dem Rechner geben kann, muss diese Instanz in Zeile 5 mit dem @
-Operator ermittelt werden.Der Wert der Eigenschaft
LastBootupTime
enthält den gesuchten Wert in einem universellen internationalen Format, das jedoch für die weitere Verarbeitung ungeeignet ist. Deshalb wird er in die Eigenschaft Value
eines SWbemDateTime
-Objekts übertragen (Zeile 8) und mit Hilfe von dessen Methode GetVarDate
ins Format "ShortDate ShortTime
" (Formatierung laut Systemsteuerung) konvertiert (Zeile 9).Mit Hilfe dieses Wertes kann in Zeile 10 mit der
DateDiff
-Funktion die Anzahl an Sekunden berechnet werden, die seit diesem Zeitpunkt vergangen sind.In den Zeilen 12 bis 15 wird dieser Wert ins Format Tage, Stunden, Minuten und Sekunden umgerechnet. Diese Werte werden in den Zeilen 17 bis 20 durch Semikolons getrennt ausgegeben.
In den Zeilen 22 bis 32 sind mehrere Beispiele aufgeführt wie das VBScript verwendet werden kann, um die Uptime in unterschiedlicher Detailtiefe auszugeben.
Grüße
Friemler