0

gwmi -Query "SELECT * FROM Win32_Service WHERE Name LIKE '%Logon%'" (工作正常)

返回一组结果,
但是当我在其他一些类 REF 属性上运行类似查询时,例如:Win32_DependentService over Antecedent 属性,查询无效。

gwmi -Query "select * from Win32_DependentService where Antecedent like '%'"(不起作用)(例如,我的意图不是显示 Win32_DependentService 中的所有条目,我有一个适当的 like 子句。)

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

来自 MSDN 的 Win32_DependentService

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

gwmi -Query "select * from Win32_DependentService where Antecedent='\\\\XXXXXXX-machine\\root\\cimv2:Win32_SystemDriver.Name=`"ibbus`"'"这给出了正确的结果。

为什么会这样?是因为先行财产是REF吗?

如果可能的话,请用适当的例子告诉我行为,以及在这种情况下如何使用“喜欢”。

4

3 回答 3

3

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

于 2012-10-09T14:31:41.153 回答
0

我不太熟悉您要执行的操作,如果这完全不合时宜,请原谅我,但首先想到的是 Windows 服务的名称是一个简单的字符串,而前项是一个类,因此您在更具体的 where 子句中显示您必须提供某种路径才能使查询正常工作,简而言之,通配符可能仅适用于字符串。

你有没有尝试过类似的东西

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

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

于 2012-09-03T13:09:20.650 回答
0

LIKE 运算符确定字符串(不为空,但至少有 1 个或多个字符)是否与模式匹配。所以语句 - WHERE value LIKE '%' - 没有意义,因为该值没有什么可检查的。请参阅 WQL LIKE 运算符:http: //msdn.microsoft.com/en-us/library/windows/desktop/aa392263 (v=vs.85).aspx

于 2012-09-04T08:28:50.220 回答