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