2013-07-01 73 views
0

下面是一個腳本,我一直試圖放在一起檢查一個進程是否在遠程計算機列表上運行。它可以工作,因爲它報告過程在遠程機器上運行,但是如果它沒有運行,我沒有任何跡象,它只是跳過那臺機器。如果進程沒有運行,我所有嘗試顯示替代消息的嘗試都失敗了。有沒有辦法說,如果PROCESS.exe沒有找到,顯示:VBscript檢查在多臺計算機上運行的進程

&計算機名

「過程中不要運行」,然後通過所有的機器繼續循環? 感謝您的幫助。

Set fso = CreateObject("Scripting.FileSystemObject") 
Set listFile = fso.OpenTextFile("C:\list.txt") 

Do While Not listFile.AtEndOfStream 
ComputerName = listFile.ReadLine() 
Set Service = GetObject("winmgmts:\\" & ComputerName &"") 
    for each Process in Service.InstancesOf ("Win32_Process") 
     If Process.Name = "PROCESS.exe" then 
      wscript.echo "PROCESS running on " & ComputerName 
     End If 
    Next 
Loop 

回答

2

只需在內部循環中設置一個標誌,找到匹配的過程。這樣,無論您是否在循環結束後找到進程,都可以打印消息。此外,您還應該添加一些錯誤處理(以防無法連接到服務器),並可能使用帶過濾器的ExecQuery以查找您正在查找的進程名稱,以便您不必從中檢索所有進程名稱所有服務器。

processname = "PROCESS.EXE" 
query = "SELECT * FROM Win32_Process WHERE Name='" & processname & "'" 

Set fso = CreateObject("Scripting.FileSystemObject") 
Set f = fso.OpenTextFile("C:\list.txt") 

Do Until f.AtEndOfStream 
    skipServer = False 
    server = f.ReadLine 

    On Error Resume Next 
    Set wmi = GetObject("winmgmts://" & server &"/root/cimv2") 
    If Err Then 
    WScript.Echo "Error " & Err.Number & " connecting to " & server ": " _ 
     & Err.Description 
    On Error Goto 0 
    skipServer = True 
    End If 
    On Error Goto 0 

    If Not skipServer Then 
    found = "not " 
    For Each process in wmi.ExecQuery(query) 
     found = "" 
     Exit For 
    Next 

    WScript.Echo "PROCESS.EXE " & found & "running on " & server & "." 
    End If 
Loop 

f.Close 
+0

謝謝你。這真的幫助我理解我應該首先去做什麼。唯一的問題是,我不得不翻轉兩個「找到」結果文本,因爲它們似乎被顛倒過來,但經過一些調整後,我確實是要去做。再次感謝。 –

+0

確實是。固定。 –

1

你不能簡單地使用切換嗎?

foundIt = false 
    for each Process in Service.InstancesOf ("Win32_Process") 
     If Process.Name = "PROCESS.exe" then 
      foundIt = true 
      exit for 
     End If 
    Next 

    if (foundIt) then 
     wscript.echo "PROCESS running on " & ComputerName 
    else 
     wscript.echo "PROCESS NOT running on " & ComputerName 
    end if 
相關問題