SCCM でエディションを収集するカスタムソリューションIssue はじめに インストールされた製品のエディション情報は SCCM OOB プロセスによってキャプチャされず、各公開者は一意の場所に格納されます。このカスタムソリューションは、レジストリキーを解析して、Adobe Acrobat、Microsoft SQL Server、Windows Exchange Server などの製品のエディションを収集します。他の製品用に収集するモジュールを追加することもできます。 要件 SCCM 統合プラグインと Software Asset Management Professional プラグインをインストールする必要がある。すべてのクライアントマシンに PowerShell がインストールされている必要がある。PowerShell スクリプトの [製品] と [公開者] の値はハードコードされ、次の規則に従います。エディションを設定する適切なソフトウェアインストールを特定するには、規則に従う必要があります。 製品は、samp_sw_product テーブルと、ソフトウェアインストールレコードの正規化された製品である prod_name フィールドからの完全一致である必要があります。パブリッシャーは、samp_sw_product テーブルと、ソフトウェアインストールレコードの正規化されたパブリッシャーであるパブリッシャーフィールドからの完全一致である必要があります。 仕組み Service Graph Connector for Microsoft SCCM Software Edition データソースは、SCCM DB からエディションレコードを取り込みます。各行はスクリプトを使用して変換され、2 つのフェーズで処理されます。一致するインストールがフェーズ 1 で見つかった場合、その [エディションの上書き] フィールドに値が入力され、次の行に進みます。一致が見つからない場合、フェーズ 2 に進み、一致するインストールを見つけようとします。両方とも失敗した場合は、その行をスキップして次の行に移動します。両方のフェーズの一致基準は次のとおりです。 フェーズ 1 正規化された積正規化されたパブリッシャーバージョンインストール先 (CI)アプリケーションパターンによって作成された = false空のエディションの上書き フェーズ 2 正規化された積正規化されたパブリッシャー空のバージョンインストール先 (CI)アプリケーションパターンによって作成された = false空のエディションの上書き セットアップ SCCM Manager と ServiceNow インスタンスの 2 種類のセットアップが必要です。 SCCM マネージャーのセットアップ 1.SCCM マネージャーと同じマシンに共有フォルダーを作成し、ネットワークパスをコピーします。たとえば、 \SAMLABVM501\Shared fetchEditions.txt をダウンロードし、上記で作成した共有フォルダーに保存します。 注:拡張子を に修正してください。ps1 PowerShell スクリプト (現在は .txt) を示します。SCCM マネージャーがスケジュールどおりに実行する必要があるため、削除しないでください。 注意: 初めて実装する場合は、ステップ 2 に進みます。現在の実装をアップグレードする場合 (ダウンロード時の上記のファイルはバージョン = 2.0) 元の fetchEditions.ps1 ファイルを、共有フォルダーに新しくダウンロードされた fetchEditions.ps1 ファイルで置き換えます。[SCCM マネージャー] -> [ソフトウェアライブラリ] -> [アプリケーション管理] -> [パッケージ] に移動します。以前に作成したパッケージを右クリックしてエディションをフェッチし、Microsoft の説明に従って [Update Distribution Points] を選択します ( ) 。[OK] をクリックします。これは、2.0 の変更に従って情報をフェッチするようにクライアントマシンに指示するためのものです。 2.[SCCM マネージャー] -> [ソフトウェアライブラリ] -> [アプリケーション管理] -> [パッケージ] に移動します。左上の [パッケージを作成] をクリックして、新しいパッケージを作成します。 3.以下に示すようにパッケージ情報を入力し、ソースフォルダーにステップ 1 でコピーしたネットワークパスがあることを確認して、[次へ] をクリックします。 4.[標準プログラム] を選択し、[次へ] をクリックします。 5.以下のスナップショットに示すように、次の一連のフィールドに入力し (注意:コマンドの末尾のファイル名は、共有フォルダーにコピーされたファイルと一致する必要があります)、[次へ]をクリックします コマンドライン: "C:\Windows\sysnative\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy Bypass -Command .\fetchEditions.ps1 6.共有フォルダーに移動し、PowerShell スクリプトのサイズを検索します。最大許容実行時間をデフォルトではなく 15 分に変更し、以下のようにディスク容量を入力して、[次へ] をクリックします。 7.ステップ 4 ~ 7 で行ったすべての構成の概要が表示されます。[Next] をクリックします。 8.正常に完了したダイアログが表示されたら、[Close] をクリックします。 9.作成したパッケージは、[Software Library] -> [Application Management] -> [Packages] に次のように表示されます。 10.パッケージ名を右クリックし、[Distribute Content] をクリックします。 11.[次へ] をクリックします。 12.[追加] を選択し、必要な配布方法を選択します。[配布ポイント] を選択しています。 [次へ] をクリックします。 13.サマリーが表示されたら、[次へ] をクリックします。 14.正常に完了したら、[閉じる] をクリックします。 15.パッケージ名をもう一度右クリックし、[Deploy] をクリックします。 16.パッケージを展開するコレクションを以下のように選択し、[次へ] をクリックします 17.配布ポイントを事前に選択する必要があります。選択されていない場合は、[追加] をクリックして [次へ] をクリックします。 18.[目的] が [必須] に設定されていることを確認し、[次へ] をクリックします。 19.[新規] をクリックして、以下のようにアサインスケジュールを作成します: クリックスケジュール: カスタムスケジュールを作成します。以下のように選択し、[OK] をクリックします: [OK] をクリックします: [Rerun Behavior] が「Always rerun program as below] に設定されていることを確認し、[Next]をクリックします。 20.以下のようにフィールドをオンまたはオフにして、[次へ] をクリックします: 21.これは非常に小さなプログラムであるため、両方のオプションを [配布ポイントからプログラムを実行] に切り替えて、[次へ] をクリックします。 22.サマリーを表示し、[次へ] をクリックします 23.正常に完了した画面で [Close] をクリックします。 24.数分待ってから、すべてのクライアントマシンでパッケージが正常に実行されたことを確認します。 [SCCM Manager] -> [監視] -> [展開] に移動し、作成したパッケージを見つけます。 ダブルクリックすると、[Success] タブに次のように表示されます。 注意: [ Error] タブに以下のようなエントリが表示された場合は、[Software Library] -> [Packages] -> [Package] に戻り、右クリックして [Update Distribution Points] をクリックします。数分待ってから、[Monitoring] -> [Deployments] に戻り、もう一度確認してください。 [OK] をクリックします。 25.新しく作成した WMI クラス (ダウンロードした PowerShell スクリプトで作成) をハードウェアインベントリに追加します。[SCCM Manager] -> [管理] -> [クライアント設定]に移動します。 [Default Client Settings] を右クリックし、次のように [Properties] をクリックします。 [Hardware Inventory] に移動し、[Set Classes] をクリックします。 [Add as below] をクリックします: [Connect] を以下のようにクリックします。パッケージを展開すると、クライアントマシン (スナップショットの SAMLABVM303) で正常に実行されました。そのマシンに接続して、WMI クラスを選択する必要があります。 以下のように SN_SAMP_ADD_REmovE_PROGRAMS_EDITION を検索して確認し、[OK] をクリックします: 以下のように [Hardware Inventory Classes] に選択されて表示され、[OK] をクリックし、[Default Settings] 画面で [OK] をクリックします。 他のすべてのカスタムクライアント設定 -> [プロパティ] -> [ハードウェアインベントリ] -> [クラスの設定] に移動すると、以下のように SN_SAMP_ADD_REMOVE_PROGRAMS_EDITION が既にオンになっていることがわかります。 クライアントマシンが新しいマシンポリシーとハードウェアインベントリの変更を受け取ると、次のハードウェアインベントリ収集サイクルで、WMI クラス (SN_SAMP_ADD_REmovE_PROGRAMS_EDITION) データが返されます。このクラスは、v_GS_SN_SAMP_ADD_REMOVE_PROGRAMS_EDITIONという名前のビューを SCCM DB に作成します。 ServiceNow セットアップ 左側のナビゲーション: [Integration – Service Graph Connector for Microsoft SCCM Software Edition] に移動します。有効にするには、[アクティブ] フィールドをオンにして、[更新] をクリックします。[Integration – Service Graph Connector for Microsoft SCCM] に移動し、関連リストの [変換] をクリックし、[エディションによるソフトウェアインストールの更新] 変換をクリックします。有効にするには、[アクティブ] フィールドをオンにして、[更新] をクリックします。 検証 SCCM データベース -> [ビュー] -> [v_GS_SN_SAMP_ADD_REMOVE_PROGRAMS_EDITION] ビューにエントリがあることを確認します。[統合 - Service Graph Connector for Microsoft SCCM] -> [インポートスケジュール] を実行。[Integration - Service Graph Connector for Microsoft SCCM] -> [Progress] に移動し、フィルターで [All] をクリックすると、[Creating import set: sn_sccm_integrate_sccm_2019_software_edition] または [Creating import set: with Completion Code Success] のエントリが表示されます。これにより、ソフトウェアエディションのデータソースが正常に実行されます。エディションデータは、ソフトウェアインストールレコードのエディション上書きフィールドに入力する必要があります。これにより、インストールレコードに関連付けられた検出モデルの再正規化がトリガーされます。正規化では、コンテンツルール/パッケージを使用して、番号形式のエディション (7760) をテキストエディション (Professional) にマッピングし、それに応じて検出モデルを更新します。再正規化後、インストールレコードは変更されません。 トラブルシューティング 目的のソフトウェアインストールがエディションで更新されない場合は、次を確認してください。 Service Graph Connector for Microsoft SCCM Software Edition のインポートスケジュールレコードがアクティブであることを確認します。[ソフトウェアインストールをエディション変換マップで更新] がアクティブであることを確認します。Service Graph Connector for Microsoft SCCM Software Edition データソースのテスト。PowerShell スクリプトでの入力に使用された製品と公開者が samp_sw_product テーブルに存在することを確認してください。 V_GS_SN_SAMP_ADD_REMOVE_PROGRAMS_EDITION ビューにレコードがない場合は、いずれかのクライアントマシンで CCM ログ (execmgr.log) を確認します。「Script for Package:P0100009、Program:Fetch Editions successful with終了コード 0」と表示されます。実行が失敗すると、次のように表示されます:「パッケージのスクリプト:P0100007、プログラム:エディションのフェッチに失敗しました。終了コード 1」 ソフトウェアエディションソリューションの無効化 ユーザーが上記のソリューションで予期しない問題が発生し、その実行を中止したい場合は、次の手順に従います。 1.[Active] フィールドのチェックボックスをオフにして、このインポートを [Active = false] に設定すると、インスタンスで Service Graph Connector for Microsoft SCCM 'Software Edition' のインポートスケジュールを無効にします。これにより、このインポートは実行されません。