Eigentlich könnten Sie schon den Feierabend einläuten, doch der PC ist noch mit Routineaufgaben beschäftigt. Die kann er aber genauso gut auch ohne Sie ausführen

Mit unserem Visual-Basic-Skript “shutdownWindows.vbs” können Sie Windows anweisen, zu einem festgelegten Zeitpunkt herunterzufahren, oder den aktuellen Benutzer abzumelden. Das Ausführen des Skripts muss mit Administrationsrechten erfolgen, da sonst der im Skript verwendete Befehl “shutdown.exe” keine Wirkung zeigt.

Einsatzzeitpunkt bestimmen
Für seine Arbeit benötigt das Skript vier Variablen, die Sie ganz am Anfang deklarieren. Seine Einsatzzeit erfährt es über den Befehl “InputBox()”. Der Anwender muss die Information nach dem Muster “HH:MM:SS” eingeben, also beispielsweise “22:00:00″ für 22 Uhr. Diesen Wert speichert es in “strEndTime”.

Option Explicit
Dim strEndTime
Dim strPause
Dim strAktion
Dim objWshShell
strEndTime = InputBox("Wann soll die
Aktion ausgeführt werden
(HH:MM:SS)?"""23:00:00")
If strEndTime = "" Then
MsgBox "Geben Sie bitte einen
Durchführungszeitpunkt an!"
Wscript.Quit
Else
If (Len(strEndTime)<>8) Or
(Mid(strEndTime,3,1) <> ":") Or
(Mid(strEndTime,6,1) <> ":") Then
MsgBox "Halten Sie sich bitte an das
beschriebene Muster zur Eingabe!"
Wscript.Quit
End If
End If

Gewünschte Aktion festlegen
Nach Eingabe des Zeitpunkts erkundigt sich das Skript, ob es das System später herunterfahren soll. Bejaht der Benutzer die Rückfrage, wird “shutdown.exe” um die Optionen “/s” und “/f” ergänzt. Dies führt dazu, dass der Befehl den Rechner herunterfährt und das Schließen laufender Anwendungen erzwingt. Anderenfalls ergänzt das Skript die Optionen “/l” und “/f”, um den aktuellen Benutzer abzumelden. Den endgültigen, vollständigen Befehlsaufruf samt Optionen speichert das Skript in “strAktion”.

strAktion = "shutdown.exe"
If MsgBox("Soll der Rechner zum
angegebenen Zeitpunkt ("& strEnd-
Time &") heruntergefahren werden?",
vbYesNo,"Frage")=vbYes Then
strAktion = strAktion & " /s /f"
MsgBox "Um " & strEnd-
Time & " fährt das System herunter!"
Else
strAktion = strAktion & " /l /f"
MsgBox "Um " & strEndTime & "
erfolgt die Abmeldung des Benutzers!"
End If

Wartezeit ändern
Mit dem Funktionsaufruf “DateDiff” errechnet das Skript die Differenz zwischen dem aktuellen und dem angegebenen Datum.  Wenn Sie die Nachfrage des Skripts verneinen, meldet es den aktuellen Benutzer zum angegeben Zeitpunkt ab Zeitpunkt in Sekunden und übergibt das Ergebnis an “strPause”. Ist die Differenz kleiner oder gleich Null, ist der angegebene Zeitpunkt am aktuellen Tag bereits verstrichen. Dann wiederholt es die Berechnung für den Zeitpunkt am nächsten Tag. Mit der Methode “WScript.Sleep()” legt sich das Skript dann für die als Parameter übergebene Dauer schlafen. Da “WScript.Sleep()” die Angabe der Wartezeit in Millisekunden fordert, rechnet das Skript zuvor den in “strPause” abgelegten Wert um.

 strEndTime = date & " " & strEndTime
strPause = DateDiff("s", now, strEndTime)
if (strPause <= 0) then
strEndTime = (date + 1) & " " & strTime
strPause = DateDiff("s", now, strEndTime)
end if
strPause = strPause * 1000
WScript.Sleep strPause

Definierte Aktion ausführen
Der zweite Teil von “ShutdownWindows. vbs” dient dem Ausführen der eigentlichen Aufgabe. Dazu verwendet das Skript das Systemprogramm “shutdown.exe”. Sobald das Skript nach dem Aufruf von “Sleep()” erwacht, erzeugt es mit “Create Object()” das Objekt “objWshShell” vom Typ “WScript.Shell” und nutzt dessen Methode “Run()”, um den in “strAktion” abgelegten Befehl auszuführen.

Set objWshShell = CreateObject
("WScript.Shell") objWshShell.Run strAktion
Wscript.Quit

Ähnliche Beiträge: