WQL-оператор не работает для свойства REF

gwmi -Query "SELECT * FROM Win32_Service WHERE Name LIKE '% Logon%'" (работает нормально)

возвращает некоторый набор результатов,
Но когда я запускаю аналогичный запрос для какого-либо другого свойства REF класса, например: Win32_DependentService через свойство Antecedent, запрос становится недействительным.

gwmi -Query "select * from Win32_DependentService, где Antecedent вроде"% "" (не работает) (это, например, мое намерение состоит в том, чтобы не отображать все записи в Win32_DependentService, и у меня есть соответствующее предложение like для этого.)

предыдущий говорит, что запрос говорит недействительным.

Win32_DependentService от MSDN

class Win32_DependentService : CIM_ServiceServiceDependency
{
  Win32_BaseService REF Antecedent;
  Win32_BaseService REF Dependent;
  uint16            TypeOfDependency;
};

gwmi -Query "select * from Win32_DependentService, где Antecedent='\\\\XXXXXXX-machine\\root\\cimv2:Win32_SystemDriver.Name=`"ibbus`" "", это дает надлежащие результаты.

Почему это так? Это потому что Antecedent свойство REF?

Пожалуйста, расскажите мне о поведении, если это возможно, с соответствующими примерами, а также о том, как использовать "как" в этом случае.

3 ответа

Похоже, вам просто нужно использовать "NOT Antecedent.Name IS NULL", если вы хотите вернуть все записи, для которых это свойство имеет значение (т.е. не пустое).

Я не очень знаком с тем, что вы пытаетесь сделать, так что простите меня, если это совершенно не так, но первое, что приходит на ум, это то, что имя службы Windows - простая строка, тогда как antecedent - это класс, так что в более конкретном предложении where вы должны указать какой-то путь, чтобы запрос работал, короче говоря, подстановочный знак работает только со строками.

Вы пробовали что-то вроде

gwmi -Query "select * from Win32_DependentService where Antecedent.Name like '%'"

Не уверен, если это будет обрабатывать сервисы без предшественников или идентификаторов, это даже допустимый синтаксис.

Оператор LIKE определяет, соответствует ли строка (не нуль, но не менее 1 или более символов) шаблону. Таким образом, утверждение - ГДЕ значение LIKE '%' - не имеет смысла, поскольку этому значению нечего сравнивать. См. Оператор WQL LIKE: http://msdn.microsoft.com/en-us/library/windows/desktop/aa392263(v=vs.85).aspx

Другие вопросы по тегам