在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文档如下所述:

http://msdn.microsoft.com/en-us/library/cc144361.aspx