我正在使用Windows 2008 Server R2。我發現這個VBScript應該檢查服務是啓動還是停止。服務狀態檢查失敗
下面是腳本:
'Declare Variables
Dim objWMIService, objProcess, colProcess, Status, strComputer, strService
'Assign Arguments
strComputer = WScript.Arguments(0)
strService = WScript.Arguments(1)
Status = False
'Check For Arguments - Quit If None Found
If Len(strService) < 1 Then
Wscript.echo "No Arguments Entered - Exiting Script"
WScript.Quit
End If
'Setup WMI Objects
Set objWMIService = GetObject("winmgmts:"& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcess = objWMIService.ExecQuery ("SELECT DisplayName, Status, State FROM Win32_Service WHERE DisplayName = '" & strService & "'")
'Check For Running Service
For Each objProcess In colProcess
If InStr(objProcess.DisplayName, strService) > 0 And objProcess.State = "Running" Then
Status = True
End If
Next
If Status = True Then
WScript.Echo "Service: " & UCase(strComputer) & " " & strService & " Running"
Else
WScript.Echo "Service: " & UCase(strComputer) & " " & strService & " Not Running"
End If
通過命令行我稱之爲像在命令行這
CSCRIPT ServiceCheckScript.vbs LOCALHOST "Print Spooler"
響應腳本是
... \ ServiceCheckScript .vbs(20,1)(null):0x80041017
我看到0x80041017錯誤是指查詢返回空值的結果,但我不確定這是爲什麼。
在我的Windows 7機器上,它工作正常。由於某些原因,錯誤代碼正在提醒我WMI損壞時返回的錯誤代碼。試試這個:start> run> wbemtest(打開它)> Connect> Connect> Query> [type]'select * from win32_service'> Apply。如果在任何時候出現錯誤(包括單擊「連接」時,包括在查詢中輸入錯誤時排除),那麼WMI將被破壞。 – eurotrash
錯誤0x8041017表示您的[查詢無效](https://msdn.microsoft.com/en-us/library/windows/desktop/aa394559.aspx)。仔細檢查'strService'的值是否與你期望的一樣(例如,使用像'WScript.Echo「 - 」&strService&「 - 」'「這樣的語句)。 –
WMI不是使用'.'來表示當前機器而不是'localhost'?猜猜它應該仍然有效,只是一個觀察。 – Lankymart