我们有一个.NET应用程序,它使用WMI收集整个网络中计算机的各种信息,例如读取Win32_NTLogEvent以查看Symantec Antivirus是否写入了任何内容。查询运行得很好,但是在重复运行WMI查询之后,"Generic Failure“错误将开始返回。这在大约之后发生得非常一致。125个电话。重新启动我们正在运行WMI查询的计算机,总是可以修复错误...直到运行下一个125个查询。
看起来存储库很好,我们找不到任何日志文件大小问题。
更多信息-在获得错误后运行WMIDiag并发现-
25607 13:55:38 (1) !!错误:报告了WMI枚举操作错误:%2错误(%S)!
25608 13:55:38 (0) ** - ROOT/CIMV2,SubClassesOf,'*',0x80041006 - (WBEM_E_OUT_OF_MEMORY)内存不足,无法执行操作。
25609 13:55:38 (0) ** MOF注册:'C:\WINNT\SYSTEM32\WBEM\SNMPREG.MOF‘25610 13:55:38 (0) ** -根/CIMv2,InstancesOf,'Win32_PerfFormattedData_PerfProc_Thread',0x8007000E -存储空间不足,无法完成此操作。
25611 13:55:38 (0) ** MOF注册:'C:\WINDOWS\SYSTEM32\WBEM\WMI.MOF‘
有人见过这个吗?想法?
发布于 2008-10-22 14:53:23
我相信我们已经找到了问题所在。为了简化我们的一些查询,我们在where子句中添加了类似1=1的内容,以简化查询的构建。删除constant=constant后,我正在测试的查询从40秒变为.4秒,并且已经运行了10,000多次,没有生成一般性故障(WBEM_E_OUT_OF_MEMORY)。
发布于 2008-10-15 15:22:13
我们在不同的WMI查询中多次看到"Generic Failure“错误,基本上得出的结论是,WMI不够稳定,不能用于原始管理之外的任何事情。在浪费了几个月之后,我们唯一的解决方案是删除所有的WMI调用,并在纯API调用中寻找替代品。它们总是工作一段时间,然后失败,并出现"Generic Error“(我知道这不是一个答案,但这是一个共同的经验,如果有人有答案,我将非常高兴听到它)。
发布于 2010-07-13 15:51:10
Windows远程管理(WinRM)可以解决所有这些问题。WinRM是WS管理协议的微软实现,是标准的简单对象访问协议(SOAP)-based。
https://stackoverflow.com/questions/204973
复制相似问题