次の方法で共有


LIKE 演算子

LIKE 演算子は、文字列が指定されたパターンと一致するかどうかを判断します。 指定されたパターンには、正確に一致する文字、またはメタ文字を含めることができます。 実際、LIKE 演算子は、次の表のワイルドカード文字を使用して部分文字列を一致させます。

文字 説明
[ ] 指定した範囲 ([a-f]) またはセット ([abcdef]) 内にある任意の 1 文字です。
^ 範囲 ([^a-f]) またはセット ([^abcdef]) 内にない任意の 1 文字です。
% 0 (ゼロ) 個以上の文字で構成される任意の文字列です。 次の例では、クラス名の任意の場所で "Win" が見つかったすべてのインスタンスを検索します。SELECT * FROM meta_class WHERE __Class LIKE "%Win%"
_ (アンダースコア) 任意の 1 文字。 クエリ文字列で使用されるリテラル アンダースコアは、[] (角かっこ) 内に配置してエスケープする必要があります。

 

たとえば、次の Power Shell コードは、Name プロパティが FirstName で始まるWin32_operatingSystem クラスのすべてのインスタンスを取得します。

Get-WmiObject win32_computerSystem -filter "Name LIKE 'FirstName%'"

アンダースコアはメタ文字であるため、クエリ ターゲットにアンダースコアがある場合は、"[]" エスケープ文字で囲む必要があります。 たとえば、名前に二重アンダースコアがあるすべてのクラスに対してクエリを実行できます。

名前に二重アンダースコアが付いているすべてのクラスを見つけるには、次のように、両方のアンダースコアを [] (角かっこ) でエスケープする必要があります。

SELECT * FROM meta_class WHERE __CLASS LIKE "%[_][_]%"

NOT を使用して LIKE ステートメントを否定できます。これを行うには、NOT をフィールド名の前に直接置いてください。 次に例を示します。

Get-WmiObject -computerName "." -query 'Select * FROM Win32_Printer WHERE Local="TRUE" AND Network ="False" AND DriverName LIKE "%HP%" AND NOT PortName LIKE "%10.%" AND NOT PortName LIKE "%\\%"'

WQL オペレーター