0

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

結果のセットを返します
が、他のクラスの REF プロパティで同様のクエリを実行すると、次のようになります。Antecedentプロパティに対する Win32_DependentService クエリは無効です。

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`"'""これにより、適切な結果が得られます。

なぜそうなのですか?Antecedent プロパティが 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 演算子は、文字列 (null ではなく、少なくとも 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 に答える