[SCCM]情報は筒抜け!クライアントPCのレジストリ情報を取得する方法はこれだ!

SCCM
sccmレジストリ

SCCM上のクライアント端末のレジストリ情報を取得してほしい、とのご要望をお客様から頂きました。

取得方法があることは知っていましたが、実際にやったことはありませんでした。

色々と苦労したので、覚書を兼ねて記事にしてみました。

レジストリを取得したいクライアントPCを用意する

まずはレジストリ取得したいクライアントPCを用意します。

このクライアントPCには、取得したいレジストリが実際に設定されている必要があります。

なぜ実際のレジストリ情報が必要なのか

後述する「RegKeyToMOF_v36.exe」というプログラムで必要だからです。

このプログラムは SCCM に読み込ませるためのレジストリ情報ファイルを生成しますが、このファイルは実際のレジストリが元ネタです。ということで、クライアントPCには実際にレジストリ情報が入っている必要があるのです。

ちょっと分かりづらいですね。

これで伝わる・・・かも

チョコボールの金のエンゼルを特定したい場合は、あらかじめ金のエンゼルの形状を知っておく必要があります。それがあって初めて、たくさんのチョコボールのくちばしの中から金のエンゼルを探し出せるイメージです。

取得したいレジストリを特定するには、あらかじめレジストリを知っておく必要があります。

例えが悪くてすいません。

RegKeyToMOF_v36.exeの事前準備

これがむちゃくちゃ厄介でした。

今の Windows 10 でもこの「RegKeyToMOF_v36.exe」を使えるのですが、もともとは SCCM 2012 の時に作られたもののようで、.NET Framework 3.5 がインストールされていないと動きません。

「RegKeyToMOF_v36.exe」を起動すると.NET Framework 3.5 をインストールしますか?というメッセージが表示されるので、インストールしようとするのですが失敗の連続です。これが本当に一番苦労しました。トホホ・・・

Windows 10は標準で.NET Framework 3.5がインストールされていない

.NET Framework 3.5 はGUIベースでインストールするのですが、オフラインインストールが無くなり、インターネット経由でインストールさせる仕組みになっています。

でも失敗するんです・・・。ですので考えた末、コマンドプロンプトでオフラインインストールすることにしました。

インストールの仕方は色々な記事がありますので

.net 3.5 オフライン

などで検索してみてください。

オフラインインストール

実際のコマンドは以下の通りです。

Dism /online /enable-feature /featurename:NetFx3 /All /Source:”D:¥sources¥sxs” /LimitAccess

ここでもSource配下のsxsファイルが使えないよというエラーになったりして少しハマりました。

今回のクライアントPCは Windows 10 1809 でしたので、同じ1809用のISOイメージから、ファイルを展開して設置したらうまく動きました。

RegKeyToMOF_v36.exeの使い方

「RegKeyToMOF_v36.exe」で取得したいレジストリは下図の通りです。

SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate

ClassName変更

今回は以下のレジストリを取得するので画面でその場所へ移動します。

移動したらClassNameを変更します。本来であればそのまま使ってもよいですが、重複したり分かりにくくなるので今回はWindowsUpdate_01としています。

configuration.mofのコピー

次はコピーする作業に移ります。

左側のタブで「configuration.mof」となっているタブの構文をすべてコピーします。

コピーしたら任意の場所にConf.mofとして保存します。(名前は何でも構いません)

Import.mofの保存

次に同じように右のタブをクリックし、同じようにコピーし、メモ帳に「Import.mof」として保存します。

これでクライアントの下準備は完了です。

SCCMサーバーの設定 – クライアント設定編

SCCMサーバーの設定は以下のように手順を踏むことで完了します。

①SCCMサーバーを起動

②SCCMサーバーのクライアント設定からハードウェアインベントリーを選択

③ハードウェアインベントリー欄から[クラスの設定]を選択

④クラスの設定から[インポート]を選択

⑤任意の場所に保存したimport.mofファイルを指定して開く

⑥確認画面が表示されるのでインポートする

⑦インポートしたクラスが反映される

⑧OKを選択し画面を閉じる

SCCMサーバーの設定 – Conf設定編

SCCM画面以外にファイルを編集する必要がありますので、以下の手順を参考にして下さい。

①SCCMサーバーのエクスプローラ画面を表示させる

②以下のフォルダに移動する

C:\ProgramFiles\Microsoft Configuration Manager\inboxes\clifiles.src\hinv

③configuration.mofというファイルがあるのでメモ帳で開く

④configuration.mofを修正

// Added extensions start

というコメントの箇所に、保存したConf.mofの内容をそのまま貼り付けます。

⑤保存して閉じる

SCCMサーバー – 確認編

今までの設定を行うと、下図のようなリソースエクスプローラー上のハードウェアインベントリ内にレジストリの値が表示されるようになります。

表示されない場合はインベントリ収集がきちんとできているか確認しましょう。いくら設定が正しかったとしても、ハードウェアインベントリを収集できていなければ取得できません。

最後に

最後まで細かく記述したかったのですが、長くなりすぎてしまうので最後は簡単に記載しました。

SCCM でお困りでしたらアーザスにお問合せください。