プライバシー&クッキー
このサイトはクッキーを使用しています。 継続することにより、あなたはそれらの使用に同意します。 Cookieの制御方法など、詳細についてはこちらをご覧ください。
Successfully Tested On: Microsoft System Center Configuration Manager versions 1809 - 2002
IT技術者が直面する可能性のある課題の1つは、SCCM内のアプリケーションバージョンを照会しようとすることです。 特定のバージョンのクエリを作成すると、等号演算子(=)を使用してうまく機能しますが、特定のバージョンより大きい(>)または小さい(<)バージョンを検索するこ
これは、バージョン番号がSCCMデータベースに文字列として格納されているためです。 WQL(sqlのサブセット)はSCCMからデータを照会するために使用されるため、文字列値を比較するときにWQLの制限によって制限されます。 WQLに関するMicrosoftからの詳細情報はここで見つけることができます: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_wql
例としてGoogle Chromeを使用してみましょう。 バージョン79.0.3945.117未満のすべての安定したバージョンのGoogle Chromeを照会するとします。 私の解決策は少し面倒ですが、確実に機能します。
その外観にもかかわらず、次の部分的なWQLクエリステートメントは機能しません:
WHERE SMS_G_System_ADD_REMOVE_PROGRAMS_64.DisplayName LIKE "Google Chrome%" AND SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version < "79.0.3945.117"
より小さい演算子(<)は、Chromeバージョン79.0.3945.88が79.0.3945.117より大きいと評価しますが、これは明らかに間違っています。 それでどうする?
LIKE演算子
LIKE演算子は、必要な結果を得るために活用するものです。 LIKEでは、角かっこ()を使用して範囲または文字セットを指定し、ワイルドカードとしてパーセント記号(%)を使用してゼロ以上の文字列を指定できます。
まず、すべてのバージョン1–9(1桁のバージョン)を照会する必要があります。 これは、部分的なSQLクエリステートメントを使用して実行されます:
WHERE SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version LIKE ".%"
percent signワイルドカード(%)は、すべてのサブバージョンを取得するために、ピリオドの後に使用されます。
次に、バージョン10–78をキャプチャする必要があります。 この文は、そのほぼすべてを取得します:
WHERE SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version LIKE ".%"
しかし、バージョンを補償するためにもこれが必要になります19, 29, 39, 49, 59, と69:
WHERE SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version LIKE "9.%"
前と同じように、ワイルドカード(%)を使用して、すべてのサブバージョンを取得します。 各セットは単一の文字にのみ対応するため、角括弧の2つのセットも使用する必要があることに注意してください。
次に、いくつかのバージョンの洞察は、いくつかの作業を減らすのに役立ちます。 GoogleのChromeの安定版リリース履歴によると、ターゲット79.0.3945.117より前にリリースされた79の安定版サブバージョンは二つしかありません。 これら2つのバージョンは79.0.3945.79と79.0.3945.88です。
等号演算子(=)を使用して、これらのそれぞれを明示的にアドレス指定します:
WHERE SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version = "79.0.3945.79"
WHERE SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version = "79.0.3945.88"
最後に、クエリは少し書式設定で完了します:
SELECT * FROM SMS_R_System INNER JOIN SMS_G_System_ADD_REMOVE_PROGRAMS_64 ON SMS_G_System_ADD_REMOVE_PROGRAMS_64.ResourceId = SMS_R_System.ResourceId WHERE SMS_G_System_ADD_REMOVE_PROGRAMS_64.DisplayName LIKE "Google Chrome%" AND (SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version LIKE ".%" OR SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version LIKE ".%" OR SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version LIKE "9.%" OR SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version = "79.0.3945.79" OR SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version = "79.0.3945.88")
79.0.3945.117未満のすべての安定したChromeバージョンが見つかります。 ただし、これは64ビットバージョンのChromeのみを検索するため、Sms_G_System_Add_Remove_Programsテーブルを使用して、32ビットの同じステートメントを複製することができます。
この同じ手法を使用して、特定のバージョンよりも大きいバージョンを照会することもでき、アプリケーションバージョンをより確実に照会するのに役立