Process 进程完成时WMI进程所有者

Process 进程完成时WMI进程所有者,process,vbscript,wmi,Process,Vbscript,Wmi,我有以下代码,试图收集有关WindowsServer2003中进程的丰富信息。当我试图为在初始WMI查询和获取所有者的调用之间完成的进程回调进程所有者时,就会出现问题。如果进程在同一时间内完成,则会引发错误并停止脚本。我宁愿只检查进程是否不可用,如果不可用,则不输出到控制台。我看了参考资料,似乎没有合适的方法。非常感谢您的帮助 引发的错误是 getProcessInfo2.vbs(42,5)SWbemObjectEx:未找到 strComputer=“” 设置objWMIService=GetO

我有以下代码,试图收集有关WindowsServer2003中进程的丰富信息。当我试图为在初始WMI查询和获取所有者的调用之间完成的进程回调进程所有者时,就会出现问题。如果进程在同一时间内完成,则会引发错误并停止脚本。我宁愿只检查进程是否不可用,如果不可用,则不输出到控制台。我看了参考资料,似乎没有合适的方法。非常感谢您的帮助

引发的错误是

getProcessInfo2.vbs(42,5)SWbemObjectEx:未找到
strComputer=“”
设置objWMIService=GetObject(“winmgmts:{impersonationLevel=impersonate}!\\”_
&strComputer&“\root\CIMV2”)
Set colItems=objWMIService.ExecQuery(_
“从Win32_进程中选择*,,48)
对于每个对象,在colitem中
'计算字段
sngProcessTime=(CSng(objItem.KernelModeTime)+CSng(objItem.UserModeTime))/10000000
Echo
Echo“ProcessId:&objItem.ProcessId
Echo“CommandLine:&objItem.CommandLine
Echo“CreationDate:&objItem.CreationDate
Echo“HandleCount:&objItem.HandleCount
Wscript.Echo“Name:”&objItem.Name
Echo“PageFaults:&objItem.PageFaults
Wscript.Echo“PageFileUsage:”&objItem.PageFileUsage
Echo“ParentProcessId:&objItem.ParentProcessId
Echo“PeakPageFileUsage:&objItem.PeakPageFileUsage
Echo“PeakVirtualSize:&objItem.PeakVirtualSize
Echo“PeakWorkingSetSize:&objItem.PeakWorkingSetSize
Echo“Priority:&objItem.Priority
Echo“QuotaNonPagedPoolUsage:”objItem.QuotaNonPagedPoolUsage
Echo“QuotaPagedPoolUsage:”objItem.QuotaPagedPoolUsage
Echo“QuotaPeakNonPagedPoolUsage:”objItem.QuotaPeakNonPagedPoolUsage
Echo“QuotaPeakPagedPoolUsage:”objItem.QuotaPeakPagedPoolUsage
Echo“ReadOperationCount:&objItem.ReadOperationCount
Echo“ReadTransferCount:&objItem.ReadTransferCount
Echo“ThreadCount:&objItem.ThreadCount
Echo“VirtualSize:&objItem.VirtualSize
Echo“WriteOperationCount:&objItem.WriteOperationCount
Echo“WriteTransferCount:&objItem.WriteTransferCount
Echo“CPUTime:&sngProcessTime
微弱回波
Return=objItem.GetOwner(strNameOfUser)
如果返回0,则strNameOfUser=“不可用”
Echo“所有者:”&strNameOfUser
下一个

您只需检查集合项是否仍然包含有效的WMI对象引用。如果WMI对象不再存在,则引用将变为null

For Each objItem in colItems
    If IsObject(objItem) Then
        ...
    End If
Next

您只需要检查集合项是否仍然包含有效的WMI对象引用。如果WMI对象不再存在,则引用将变为null

For Each objItem in colItems
    If IsObject(objItem) Then
        ...
    End If
Next