'*** v7.A *** www.dieseyer.de ******************************* ' ' Datei: wmi-pcreboot.vbs ' Autor: dieseyer@gmx.de ' Auf: www.dieseyer.de ' ' Sendet mit WMI eine Reboot-Auforderung an einen PC. ' '************************************************************ Option Explicit ' Siehe http://dieseyer.de/dse-wsh-lernen.html#OptionExpl Dim WSHNet : Set WSHNet = WScript.CreateObject("WScript.Network") Dim oArgs : Set oArgs = Wscript.Arguments Dim WSHShell : Set WSHShell = WScript.CreateObject("WScript.Shell") Dim i, PCName For i = 0 to oArgs.Count - 1 ' hole alle Argumente If i = 0 Then PCName = oArgs.item(i) Next ' PCName = WScript.CreateObject("WScript.Network").ComputerName ' PCName = wshnet.ComputerName ' PCName = "53.73.179.56" If PCName = "" Then PCName = InputBox( vbCRLF & vbCRLF & "Welcher PC soll neu gestartet werden?", WScript.ScriptName, PCName ) LogDatei( Now() & vbTab & PCName & " " & vbTab & " soll eine ReBoot-Anforderung bekommen." ) ' PCreboot( PCName ) remoteShutdown( PCName ) LogDatei( Now() & vbTab & PCName & " " & vbTab & " hat eine ReBoot-Anforderung erhalten." ) WSHShell.Popup PCName & vbCRLF & vbCRLF & "hat eine ReBoot-Anforderung erhalten." ,15 , "0036 :: " & WScript.ScriptName, 64 + 4096 + 0 '******************************************************* Sub remoteShutdown(remotename) ' 5.3 - http://dieseyer.de '******************************************************* ' http://groups.google.de/groups?hl=de&lr=&newwindow=1&frame=right&th=43c55ccb528dbbc3&seekm=ebO58v50DHA.2480%40TK2MSFTNGP10.phx.gbl#link5 Const EWX_LOGOFF = 0 Const EWX_SHUTDOWN = 1 Const EWX_REBOOT = 2 Const EWX_FORCE = 4 Const EWX_POWEROFF = 8 Dim wmi : Set wmi = GetObject( "winmgmts:{(RemoteShutdown)}!//" & remotename & "/root/cimv2" ) Dim objset : set objset = wmi.instancesof("win32_operatingsystem") Dim obj, os for each obj in objset obj.security_.privileges.add 18, true set os = obj : exit for next os.win32shutdown 6 End Sub ' remoteShutdown(remotename) 5.3 - http://dieseyer.de '******************************************************* Sub PCreboot( strComputer ) ' 5.3 - http://dieseyer.de '******************************************************* Dim objWMIService, colOperatingSystems, ObjOperatingSystem ' On Error Resume Next ' wird immer ausgeführt Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate,(Shutdown)}!\\" & strComputer & "\root\cimv2") Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem") For Each objOperatingSystem in colOperatingSystems ObjOperatingSystem.Reboot() Next On Error GoTo 0 End Sub ' PCreboot( strComputer ) 5.3 - http://dieseyer.de '******************************************************* Sub LogDatei( Txt ) ' Anfang '******************************************************* CreateObject("Scripting.FileSystemObject").OpenTextFile( WScript.ScriptName & ".log" , 8, true ).WriteLine( Txt ) End Sub ' LogDatei