Hallo zuammen
ich habe von UEZ ein Script gefunden welches einen Dienst auf einem Remote Computer stoppt.
Kann mir bitte jemand weiterhelfen um in dem Script vorher zu prüfen welcher Status der Service (gestartet) hat.
Wenn der Service nicht gestartet ist soll das Script den Service starten.
[autoit];Coded by UEZ 2009
#AutoIt3Wrapper_Change2CUI=y
#AutoIt3Wrapper_UseUpx=n
$oMyError = ObjEvent("AutoIt.Error", "oMyError") ; Install a custom error handler
Global $ip = "localhost"
If $CmdLine[0] > 0 Then $ip = $CmdLine[1]
$stop_srv = "RemoteRegistry"
If Stop_Service($ip, $stop_srv) Then
MsgBox(0, "Stop Service", "Service " & $stop_srv & " stopped properly on " & $ip)
Else
MsgBox(16, "Error", "Error")
EndIf
Func Stop_Service($srv, $service, $sUsr = "", $sPass = "")
Local $colItems, $colItem, $ping, $objWMILocator, $objWMIService
$ping = Ping($srv)
If $ping Then
$objWMILocator = ObjCreate("WbemScripting.SWbemLocator")
If @error Then Return SetError(3, 0, 0)
$objWMIService = $objWMILocator.ConnectServer($srv, "\root\cimv2", $sUsr, $sPass, "", "", 128)
If @error Then Return SetError(4, 0, 0)
$colItems = $objWMIService.ExecQuery("Select * From Win32_Service Where Name='" & $service & "'")
If IsObj($colItems) Then
For $objItem In $colItems
$objItem.StopService()
Next
Return 1
Else
Return SetError(1, 0, 0)
EndIf
EndIf
Return SetError(2, 0, 0)
EndFunc
Func oMyError()
Msgbox(0,"AutoItCOM Test","We intercepted a COM Error !" & @CRLF & @CRLF & _
"err.description is: " & @TAB & $oMyError.Description & @CRLF & _
"err.windescription:" & @TAB & $oMyError.WinDescription & @CRLF & _
"err.number is: " & @TAB & Hex($oMyError.Number, & @CRLF & _
"err.lastdllerror is: " & @TAB & $oMyError.LastDllError & @CRLF & _
"err.scriptline is: " & @TAB & $oMyError.Scriptline & @CRLF & _
"err.source is: " & @TAB & $oMyError.Source & @CRLF & _
"err.helpfile is: " & @TAB & $oMyError.Helpfile & @CRLF & _
"err.helpcontext is: " & @TAB & $oMyError.HelpContext _
)
EndFunc