在WQL(WMI查询语言)中获取空值数组列时出错
我对WQL(WMI查询语言)世界有点新不足。我试图使用WQL查询ConfigMgr 2012,但是当我尝试在逗号分隔的select子句中提及列的名称时,我遇到了一个错误。只有当提取的列是数组类型并且包含空值时才会发生错误。如果数组列有一些值,它工作正常。即使列是非数组类型(字符串,int等)并且包含空值,同样工作正常。当我火了下面的查询在WQL(WMI查询语言)中获取空值数组列时出错
它工作得很好:我已经阐述了下面的示例查询
查询#1:SELECT * from SMS_PROGRAM
但是当我火了下面的查询它导致错误:
查询#2:SELECT PackageID, SupportedOperatingSystems from SMS_PROGRAM
(GenericFailure) with error code number 0x80041001
这里SupportedOperatingSystems
属性为所有记录该COM e在包含7条记录的结果集中。该属性是一个包含SMS_OS_Details
类的对象的数组。我已经使用wbemtest工具获得了这些细节。我请求任何人遇到这个问题,那么任何帮助将不胜感激。
我从我公司的一位同事那里得到了答案。这是什么,他回答我:
"You get the NULL specifically because it is a lazy property. You simply cannot include a lazy property in your select query the way you are doing it. You must use * and then parse the object."
什么是懒惰的性质,以及如何阅读,请按照以下提到的链接:
http://msdn.microsoft.com/en-us/library/jj218055.aspx
酒店SupportedOperatingSystems
已经被定义为懒惰MSDN文档如下所述: