Ошибка при извлечении столбцов массива с нулевым значением в WQL (язык запросов WMI)

Я немного новичок в мире WQL (язык запросов WMI). Я пытаюсь запросить ConfigMgr 2012 с помощью WQL, но сталкиваюсь с ошибкой, когда пытаюсь указать имя столбца в предложении выбора, разделенном запятыми. Ошибка возникает ТОЛЬКО, когда извлекаемый столбец имеет тип массива и содержит нулевые значения. Он отлично работает, если столбец массива имеет некоторые значения. То же самое отлично работает, даже если столбец не является массивом (строка, целое число и т. д.) и содержит нулевые значения. Я разработал примеры запросов ниже:

Когда я запускаю следующий запрос, он работает хорошо:

Запрос № 1: SELECT * from SMS_PROGRAM

Но когда я запускаю следующий запрос, это приводит к ошибке:

Запрос № 2: SELECT PackageID, SupportedOperatingSystems from SMS_PROGRAM

(GenericFailure) с кодом ошибки 0x80041001.

Здесь свойство SupportedOperatingSystems равно null для всех записей, которые входят в набор результатов, содержащий 7 записей. Это свойство представляет собой массив, содержащий объекты класса SMS_OS_Details. Я получил эти данные с помощью инструмента wbemtest. Я прошу, если кто-нибудь сталкивался с этой проблемой, то любая помощь будет принята с благодарностью.


person RBT    schedule 31.03.2014    source источник


Ответы (1)


Я получил ответ от одного из моих коллег в моей компании. Вот что он мне ответил:

«Вы получаете NULL именно потому, что это ленивое свойство. Вы просто не можете включить ленивое свойство в свой запрос на выборку так, как вы это делаете. Вы должны использовать *, а затем проанализировать объект».

Что такое ленивое свойство и как его читать, пожалуйста, следуйте по указанной ниже ссылке:

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

Свойство SupportedOperatingSystems было определено как отложенное в документации MSDN, как указано ниже:

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

person RBT    schedule 01.04.2014