我正在数百到数千台计算机上进行批量信息收集。它在我正在尝试的99%的机器上工作,但有些计算机的行为非常奇怪。
我可以成功连接一台计算机(Windows XP),但在查询时它会完全锁定。 15分钟后我停止了等待。
我的代码:
log.info("Connecting to " + remote_name + " WMI")
remote_connection = wmi.connect_server(server=remote_name,security_flags=0x80,impersonation_level="Impersonate")
log.info("Linking to WMI remote")
remote_wmi = wmi.WMI(wmi=remote_connection)
log.info("Connected")
log.debug("Getting workstation type")
for s in remote_wmi.Win32_ComputerSystem():
self.logger.debug("Past the query!")
compInfo["Workstation make"] = s.Manufacturer.strip()
在日志中我得到了
12:21:12 PM [dump-COMPNAME] INFO - Connecting to COMPNAME WMI
12:21:16 PM [dump-COMPNAME] INFO - Linking to WMI remote
12:21:16 PM [dump-COMPNAME] INFO - Connected
12:21:16 PM [dump-COMPNAME] DEBUG - Getting workstation type
永远不要“过去查询!”。没有异常被抛出。它只是卡住了。
如何在60秒后将查询超时而不是永久冻结?是另一种选择吗?
我发现的唯一的事情是this,但它是C#