Shutdown Script in vbs
Hallo, ich brauche ein Script welches in einer Domäne alle Rechner herunterfährt. Besser gesagt auf 2 Domänen. Dies will ich aber von unserem Server aus machen. Das heisst ich muss irgendwie auf den anderen Domaincontroller der 2. Domäne zugreifen (Mit vbs als Administrator einloggen um die Rechner der 2. Domäne herunterzufahren)
Alles was ich zusammengebracht habe ist mit vbs einen bestimmten Rechner herunterzufahren mit den verschiedenen Parametern.. Wie mache ich das mit mehreren und wie logge ich mich auf dem 2. Server (DC für die 2. Domäne) an? Schlecht wär es auch nicht wenn sich die Server dann auch herunterfahren würden!
Bitte euch Experten um Hilfe
Christoph
Alles was ich zusammengebracht habe ist mit vbs einen bestimmten Rechner herunterzufahren mit den verschiedenen Parametern.. Wie mache ich das mit mehreren und wie logge ich mich auf dem 2. Server (DC für die 2. Domäne) an? Schlecht wär es auch nicht wenn sich die Server dann auch herunterfahren würden!
strComputer = "TestPC"
Const LOGOFF = 0
Const SHUTDOWN = 1
Const REBOOT = 2
Const POWEROFF = 8
Const FORCE = 4
flags = POWEROFF + FORCE
Set objwmi = GetObject("winmgmts:" _
& "{(Shutdown)}!\\" & strComputer)
wql = "Select * from Win32_OperatingSystem"
Set colOperatingSystems = objwmi.ExecQuery(wql)
For Each objOperatingSystem In colOperatingSystems
objOperatingSystem.Win32Shutdown flags, 0
Next
Bitte euch Experten um Hilfe
Christoph
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 119700
Url: https://administrator.de/contentid/119700
Ausgedruckt am: 26.11.2024 um 08:11 Uhr
7 Kommentare
Neuester Kommentar
Moin Moin
1. Wenn Code postest, schau doch mal in die .
2. Eine Vertrauensstellung zwischen den Domänen würde die aufgabe erleichtern.
3. Hier hast duch ein etwas erweitertes Codebsp. mit Anmeldung: http://www.quaschtel.de/wsh/wmi.htm#Fremder_Rechner_herunterfahren
4. Um das mit mehreren PCs zu machen, baust Du dir entweder eine Schleife oder arbeitest eine Liste ab.
5. Ich verwende zum Shutdown/Reboot lieber die Shutdown.exe.
Gruß L.
1. Wenn Code postest, schau doch mal in die .
2. Eine Vertrauensstellung zwischen den Domänen würde die aufgabe erleichtern.
3. Hier hast duch ein etwas erweitertes Codebsp. mit Anmeldung: http://www.quaschtel.de/wsh/wmi.htm#Fremder_Rechner_herunterfahren
4. Um das mit mehreren PCs zu machen, baust Du dir entweder eine Schleife oder arbeitest eine Liste ab.
5. Ich verwende zum Shutdown/Reboot lieber die Shutdown.exe.
Gruß L.
Hallo Hallo
6. Ich verwende zum Shutdown/Reboot lieber die PSShutdown.exe.
vorher natürlich die Computer noch in eine TXT eintragen und dank dieser die Computer runterfahren/neu starten lassen
dann würde ich das ganze noch per Batch machen, evtl. vorher die Rechner noch anpingen, um zu sehen, ob sie überhaupt an sind und fertig wäre das ganze
6. Ich verwende zum Shutdown/Reboot lieber die PSShutdown.exe.
vorher natürlich die Computer noch in eine TXT eintragen und dank dieser die Computer runterfahren/neu starten lassen
dann würde ich das ganze noch per Batch machen, evtl. vorher die Rechner noch anpingen, um zu sehen, ob sie überhaupt an sind und fertig wäre das ganze
Moin Moin
Der Beitrag ist ja immer noch offen.
Ist doch nicht so schwer. Du schiebst dein Code in eine Function. Dann liest du die PCnamen aus einer Textdatei Zeilenweise aus und rufst deine Function mit dem PC namen auf.
Etwa so (ungetestet):
Gruß L.
Der Beitrag ist ja immer noch offen.
Ist doch nicht so schwer. Du schiebst dein Code in eine Function. Dann liest du die PCnamen aus einer Textdatei Zeilenweise aus und rufst deine Function mit dem PC namen auf.
Etwa so (ungetestet):
Const User = "Christoph"
Const PW = "test"
Const ForReading = 1
Dim szNextLine
Dim szValue
Set objDictionary = CreateObject("Scripting.Dictionary")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("PCListe.txt", ForReading)
Do Until objTextFile.AtEndOfStream
szNextLine = objTextFile.Readline
PCShutdown(szNeuLine)
Loop
Function PCShutdown(PC,User,PW)
On Error Resume Next
Set WMI = CreateObject("WBemScripting.SWbemLocator")
Set Login = WMI.ConnectServer(PC,"root/cimv2",USER,PW)
If Err.Number <> 0 then
Wscript.Echo Now() & " Fehler beim Einloggen bei Rechner: " & PC
Err.Clear
Shutdown = 1
End if
Set BS = Login.InstancesOf("Win32_OperatingSystem") ' Kann auch ExecQuery("SELECT * FROM Win32_OperatingSystem") verwendet werden.
On Error Resume Next
For Each obj in BS
Shutdown = obj.Shutdown
Next
If (Shutdown = 0) Then
WScript.Echo Now() & ": Rechner " & PC & " wird/wurde heruntergefahren."
Else
WScript.Echo Now() & ": Rechner " & PC & " konnte nicht heruntergefahren werden!"
End if
End Function
Gruß L.