Редактировать:
Что касается выходных данных, вы всегда можете записать его в файл в соответствии с вашими потребностями или создать строку нужного формата, объединяя каждый статус компьютера во время каждой итерации и Wscript.Echo
это потом.Возможно, не удастся найти процесс по ряду причин (например, строка, которую вы используете для ссылки на целевой компьютер, неправильно отформатирована), я действительно не могу сказать наверняка без дополнительного контекста.Я переписал решение, стараясь сделать его максимально понятным и похожим на ваш собственный код.
Dim FSObject, MachineListObject, outFileObject
Dim processName, objWMIService, coolProcesses, strComputer
Set FSObject = CreateObject("Scripting.FileSystemObject")
Set MachineListObject = FSObject.OpenTextFile("C:\test\remote_hosts.txt")
Set outFileObject = FSObject.CreateTextFile("C:\test\out.txt", True)
processName = "notepad++.exe" 'Change this to your process of choice
Do While Not MachineListObject.AtEndOfStream
strComputer = MachineListObject.ReadLine()
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = '" & processName & "'")
If colProcesses.Count <> 0 then
outFileObject.Write "Machine " & strComputer & ": Service is running" & vbCrLf
Else
outFileObject.Write "Machine " & strComputer & ": Service is not running" & vbCrLf
End If
Loop
outFileObject.Close
Это может помочь вам: Что такое "strComputer"? и Win32_Process (прокрутите вниз до раздела примеров, если вы хотите, чтобы он работал как можно скорее)