0

我对 WQL(WMI 查询语言)世界并不陌生。我正在尝试使用 WQL 查询 ConfigMgr 2012,但是当我尝试在逗号分隔的选择子句中提及列的名称时遇到错误。仅当获取的列是数组类型并且包含空值时才会发生错误。如果数组列有一些值,它工作正常。即使列是非数组类型(字符串、整数等)并且包含空值,同样的工作也很好。我已经详细说明了下面的示例查询:

当我触发以下查询时,它运行良好:

查询#1:SELECT * from SMS_PROGRAM

但是当我触发以下查询时,它会导致错误:

查询#2:SELECT PackageID, SupportedOperatingSystems from SMS_PROGRAM

(GenericFailure) 错误代码为 0x80041001

对于包含 7 条记录的结果集中的所有记录,此处SupportedOperatingSystems的属性为 null。该属性是一个包含类对象的数组SMS_OS_Details。我已经使用 wbemtest 工具获得了这些详细信息。我要求如果有人遇到这个问题,那么任何帮助将不胜感激。

4

1 回答 1

0

我从公司的一位同事那里得到了答复。他是这样回复我的:

“你得到 NULL 是因为它是一个惰性属性。你根本不能像你这样做的方式在你的选择查询中包含一个惰性属性。你必须使用 * 然后解析对象。“

什么是惰性属性以及如何阅读它们,请点击下面提到的链接:

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

该属性SupportedOperatingSystems在 MSDN 文档中被定义为惰性,如下所述:

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

于 2014-04-01T10:08:53.747 回答