gwmi -Query“SELECT * FROM Win32_Service WHERE Name LIKE'%Logon%'”(工作正常)
返回一些结果集,但当我在其他类REF属性ex:Win32_DependentService上对Antecedent属性运行类似查询时,查询无效。
gwmi -Query“select * from Win32_DependentService,其中Antecedent就像'%'”(不起作用)(例如,我的意图是不显示Win32_DependentService中的所有条目,以及我有一个适当的条款。)
上面的一个告诉查询告诉无效。
来自MSDN的Win32_DependentService
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`“'”这给了正确的结果
为什么会这样?是因为先行财产是REF吗?
请尽可能使用适当的示例告诉我行为,以及在这种情况下如何使用'like'。
答案 0 :(得分:3)
如果您想要返回此属性具有值的所有记录(即非空白),您只需要使用“NOT Antecedent.Name IS NULL”。
答案 1 :(得分:0)
我并不是很熟悉你想要做的事情,所以请原谅我,如果这完全不合适,但首先想到的是Windows服务的名称是一个简单的字符串,而前面的是一个class,因此当您在更具体的where子句中显示时,您必须提供某种路径来使查询起作用,简而言之,通配符只适用于字符串。
你有没有试过像
这样的东西gwmi -Query "select * from Win32_DependentService where Antecedent.Name like '%'"
不确定这是否会处理没有前因或id的服务,它甚至是有效的语法。
答案 2 :(得分:0)
LIKE运算符确定字符串(非空但至少包含1个或多个字符)是否与模式匹配。因此声明 - WHERE值 LIKE '%' - 没有意义,因为该值无法检查。请参阅WQL LIKE运算符: http://msdn.microsoft.com/en-us/library/windows/desktop/aa392263(v=vs.85).aspx