mavdee
Goto Top

Shutdown Script mit VBS

Hallo!

Gegeben ist folgende Situation. In unserer Firma gibt es einen Mitarbeiter der Ständig zwischen Außendienst und Innendienst unterwegs ist. Oft ist der Fall dass er Abends nicht mehr in die Firma kommt um seinen Rechner Auszuschalten. Hierzu habe ich ein Shutdown Script geschrieben das um 18:00 Uhr über einen Geplanten Task den Computer herunterfährt.

'Shutdown-Script

set objShell = CreateObject("WScript.Shell")
Set shella = WScript.CreateObject ("Shell.Application")
shella.MinimizeAll
Dim objShell
objShell.Run "cmd /C shutdown -s -t 30"
if msgbox("Der Computer wird in 30 Sek. automatisch heruntergefahren. Abbrechen?", vbyesno+vbinformation, "Herunterfahren")=vbyes then
objShell.Run "cmd /C shutdown -a"
end if

Leider wird das Script aber nur einmalig ausgeführt, der Task läuft dann weiter und wird nicht erneut ausgeführt. Dies muss eine Rechtegeschichte sein, da der Task mit dem Administrator Benutzer angelegt ist.

Ich hatte mir überlegt, das Script einfach in den Autostart einzubinden und im Script selbst eine Zeitabfrage zu machen die dann um 18 Uhr die den Shutdown-Vorgang einleitet.

Gibt es eine Möglichkeit so eine Zeitabfrage zu machen? Damit wäre mir sehr geholfen. Natürlich bin ich auch für andere Lösungsvorschläge gerne offen.

Gruß

Flo

Content-Key: 107464

Url: https://administrator.de/contentid/107464

Printed on: April 24, 2024 at 16:04 o'clock

Mitglied: 60730
60730 Jan 29, 2009 at 08:43:21 (UTC)
Goto Top
Moinsen,

nimm einen Server, eine Liste der Systeme und aus den Pstools PSShutdown und steuere das herunterfahren der Clients zentral.

Die Liste kannst du auch aktiv selbst (vom Server) erzeugen oder mit Wildcard arbeiten.

Gruß
Member: MaVdee
MaVdee Jan 29, 2009 at 09:33:00 (UTC)
Goto Top
Das Problem ist, wenn der User um 18 uhr noch am rechner sitzt kriegt er dann die msgbox nicht um den shutdown evtl. abzubrechen face-sad
Mitglied: 60730
60730 Jan 29, 2009 at 09:41:17 (UTC)
Goto Top
Zitat von @MaVdee:
Das Problem ist, wenn der Admin die Parameter eines Werkzeugs nicht mit /? aufrufen kannface-sad

Stimmt - da gebe ich dir Recht -c -m usw. wärs gewesen.

Gruß
Member: MaVdee
MaVdee Jan 29, 2009 at 10:58:38 (UTC)
Goto Top
Sehr freundlich. Offensichtlich haben Sie da was nicht verstanden. Der User muss die möglichkeit haben den Shutdown abzubrechen. Das ist mit Ihrer Lösung nicht realisierbar.
Mitglied: 60730
60730 Jan 29, 2009 at 12:00:41 (UTC)
Goto Top
Servus und sorry,

dann noch mal ganz von vorne - mittlerweile hab ich auch meinen Kaffee face-wink

Leider wird das Script aber nur einmalig ausgeführt, der Task läuft dann weiter und wird nicht erneut ausgeführt.

Wenn ich dich jetzt richtig verstanden habe - läuft das Vbs noch?

Wenn ja - versuchs mal mit einem:
Set WshShell = Nothing
Am Ende des vbs.


Wenn nein - immer noch nicht verstanden - dann bitte nochmal genauer erklären, wo der Schuh drückt.

(Wobei das Script ja auch keine "Schleife" hat - um nach "Nein" nochmal hochzukommen.)

Gruß
Member: MaVdee
MaVdee Jan 29, 2009 at 12:53:30 (UTC)
Goto Top
Danke für die Hilfe! Werds heute Abend mal testen, sieht aber gut aus.
Member: MaVdee
MaVdee Jan 29, 2009 at 13:16:01 (UTC)
Goto Top
Das Funktioniert soweit. Jetzt habe ich noch eine Frage.

Wenn der Task ausgeführt wird wenn der User angemeldet ist, erscheint die Msgbox nicht, das hängt offensichtlich damit zusammen das der Task als administrator und nicht als user ausgeführt wird. Trägt man beim erstellen des Tasks nämlich den User ein, erscheint auch die Msgbox.

Lässt sich das irgendwie umgehen? Hab leider nicht so viel Ahnung von VBS. Hat grade mal so fürs Script gereicht :D
Mitglied: 60730
60730 Jan 29, 2009 at 13:34:28 (UTC)
Goto Top
Benutzt du Login Skripte?

Wenn ja, würd ich das Vbs mit einer Batch verbinden. Bzw. eigentlich "immer"

at \\%computername% 18:00 /interactive /every mo,di,mi,do,fr "laufwerk:\pfad\mein.vbs"  

"So" richtest du - bzw. der User beim anmelden - schön das vbs um 18:00 für ein deutsches OS ein und durch den Schalter /interaktiv bekommt er auch was auf den Schirm.

Und wenn du das per Loginskript realisieren kannst und der User die rechte hat - dann evtl. noch ein:

at |find "Es sind keine" && AT \\%computername% 18:00 /interactive /every mo,di,mi,do,fr "laufwerk:\pfad\mein.vbs"  
davor gestellt.

Try it

Gruß
Member: Logan000
Logan000 Jan 29, 2009 at 13:36:22 (UTC)
Goto Top
Moin Moin

Ich frage mich gerade mit was für Rechten deine "User" ausgestattet sind.
So wie ich das sehe kann der gemeine Benutzer shutdown.exe nicht verwenden, um das, durch einen Admin "angeordnete" Heruterfahren abzubrechen.
Und das ist auch gut so.

Wenn der Task ausgeführt wird wenn der User angemeldet ist, erscheint die Msgbox nicht, das hängt offensichtlich damit zusammen das der Task als administrator und nicht als user ausgeführt wird. Trägt man beim erstellen des Tasks nämlich den User ein, erscheint auch die Msgbox.
Lässt sich das irgendwie umgehen?
Lass mich überlegen: Kann ein User in den Ausführungskontext eines Administrators schauen? Nö. Das ist ebenfalls gut so.

So wie ich das sehe wird sich deine Anforderung mit der Shutdown.exe nicht realisieren lassen.
Also auch nicht als startskript was um 18:00 nachfragt.

Ich würde mir die sache einfacher machen.
Kläre mit der GL eine Uhrzeit ab, ab der nicht mehr gearbeitet werden sollte. Und fahre diese PC Servergesteuert herunter. Fertig

Gruß L.