C# 类WQL运算符不适用于REF属性

C# 类WQL运算符不适用于REF属性,c#,wmi,wql,C#,Wmi,Wql,gwmi-Query“从Win32_服务中选择*,其中的名称类似于“%Logon%””(工作正常) 返回一些结果集,但当我对其他某个类REF属性ex:over Antecedent属性运行类似查询时,该查询无效 gwmi-Query“从Win32_DependentService中选择*,其中先行项类似“%”(不起作用)(例如,我的目的不是显示Win32_DependentService中的所有条目,我有一个适当的like子句。) 上面的一个告诉查询告诉无效 来自MSDN的Win32_Depen

gwmi-Query“从Win32_服务中选择*,其中的名称类似于“%Logon%””(工作正常)

返回一些结果集,
但当我对其他某个类REF属性ex:over Antecedent属性运行类似查询时,该查询无效

gwmi-Query“从Win32_DependentService中选择*,其中先行项类似“%”(不起作用)(例如,我的目的不是显示Win32_DependentService中的所有条目,我有一个适当的like子句。)

上面的一个告诉查询告诉无效

来自MSDN的Win32_DependentService

class Win32_DependentService : CIM_ServiceServiceDependency
{
  Win32_BaseService REF Antecedent;
  Win32_BaseService REF Dependent;
  uint16            TypeOfDependency;
};
gwmi-Query“从Win32\u DependentService中选择*,其中Antecedent='\\\\XXXXXXX-machine\\root\\cimv2:Win32\u SystemDriver.Name=`“ibbus`'”这将给出正确的结果

为什么会这样?是因为先行属性是REF吗


如果可能的话,请用适当的例子告诉我这些行为,另外,在这种情况下如何使用“like”。

我不太熟悉您要做的事情,请原谅我,如果这完全不正确,但首先想到的是windows服务的名称是一个简单的字符串,而antecedent是一个类,正如您在必须提供的更具体的where子句中所示某种使查询工作的路径,简言之,通配符可能只对字符串有效

你试过类似的东西吗

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

不确定这是否会处理没有先行项或id的服务,它甚至是有效的语法。

我不太熟悉您试图执行的操作,请原谅,如果这完全不正确,但首先想到的是windows服务的名称是一个简单的字符串,而先行项是一个类,正如您在中所示更具体的where子句必须提供某种路径才能使查询工作,简言之,通配符可能只对字符串有效

你试过类似的东西吗

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

不确定这是否会处理没有先行项或id的服务,它甚至是有效的语法。

LIKE运算符确定字符串(不是null,但至少有1个或多个字符)是否与模式匹配。因此,语句-WHERE value类似于“%”-没有意义,因为该值没有任何可检查的内容。请参见WQL-LIKE运算符:

LIKE运算符确定字符串(非空,但至少有1个或多个字符)是否与模式匹配。因此,语句-WHERE value类似于“%”-没有意义,因为该值没有任何可检查的内容。请参见WQL-LIKE运算符:

如果要返回此属性有值(即非空)的所有记录,听起来只需要使用“NOT Antecedent.Name IS NULL”。

如果要返回此属性有值(即非空)的所有记录,听起来只需要使用“NOT Antecedent.Name IS NULL”。

它不起作用,但我的感觉是,如果它能做“=”比较,它应该也能做“喜欢”比较。它不起作用,但我的感觉是,如果它能做“=”比较,它应该也能做“喜欢”。“%”应该匹配所有字符串,即使是MSDN也这么说,如果在使用时应该返回所有实例。当我将“%Logon%”替换为“%”时,它将返回Win32_服务的所有实例。“%”应匹配所有字符串,即使是MSDN也这么说,如果在使用时应返回所有实例。当我将“%Logon%”替换为“%”时,它将返回Win32\u服务的所有实例。