我正在尝试连接到lenel并使用WQL来获取结果。在WMI资源管理器中运行时,WQL返回记录。
Set objServices = GetObject("winmgmts://./root/onguard")
Set cardSet = objServices.ExecQuery("select * from Lnl_Badge where id =11111")
if not cardSet is nothing then
Response.Write("<br/>cardset has something")
vContinue = true
else
Response.Write("<br/>cardSet set is nothing")
Exit Function
end if
Response.Write("<br/>count ")
Count = cardSet.Count
Response.Write(Count)
问题是Count的值无效,程序退出当前函数。知道什么是错的。
显示“Cardset有东西”。
编辑:
为了检查语法,我为cim2v做了以下
Set objWMIService = GetObject("winmgmts:")
Set colItems = objWMIService.ExecQuery("Select * From Win32_Process")
Response.Write(colItems.Count)
for each colItem in colItems
If Not colItem Is Nothing Then
Response.Write("<br/>")
Response.Write(colItem.ProcessID)
end if
next
令我惊讶的是它的工作....那么为什么上面的代码不是在按摩...... :(
编辑: 日志文件中的错误
(Tue Aug 20 11:50:22 2013.179589208) : WDM call returned error: 4200
(Tue Aug 20 11:50:22 2013.179589208) : WDM specific return code: 4200
(Tue Aug 20 11:50:22 2013.179589208) :
答案 0 :(得分:0)
根据我对WMI API参考的理解,如果您没有遇到错误,SWbemServices.ExecQuery方法将始终返回SWbemObjectSet对象,无论该对象中是否有任何结果。
如果你的查询返回0结果,你仍然会在cardSet
中有一个有效对象,所以If Not cardSet Is Nothing
语句将始终触发,除非出现错误,但同时计数仍然是返回0。