みなさま、こんにちは。Configuration Manager サポート チームです。
本日は、お客様をサポートする中、我々が頻繁に遭遇する「重複 GUID 問題」についてご案内させて頂きます。
是非、運用されている Configuration Manager (CM) について定期的にご確認いただき、System Health を良い状態に保つ一助にして頂きたく存じます。
重複 GUID 問題 とは
CM がクライアントの同定のために引き当てる、GUID “XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX” の形式の番号が、複数の端末にて重複してしまう問題です。
何が問題なの?
CM がクライアントの同定を正しく行えなくなってしまうので、下記のような事象が発生します。
CM のほぼ全ての機能が正しく利用出来なくなってしまいます。
- 意図しない端末に対して、アプリケーション、パッケージ、更新プログラム、タスクシーケンスの配布を行ってしまう。
- 収集したインベントリ情報が正しい端末に紐付かない (収集したインベントリ情報を信頼できなくなってしまう)
どうして問題が発生するの?
CM はクライアントが CM の管理ポイントに初めて接続した際に GUID を生成し、クライアント側に伝えます。そのクライアント側に伝えられた GUID は %windir%\SMSCFG.ini に保管されます。この一連の流れにより CM サーバーにクライアント情報が登録されます。クライアントは、この SMSCFG.ini に記載の GUID を利用して CM とのやりとりを行います。
ということは、この登録作業が終わってしまっている CM のクライアントのデータを複製すると、複製元のクライアントと、複製先のクライアントにて、SMSCFG.ini もまた複製されてしまうわけですから、GUID も同じものを使ってしまいます。本当は違うクライアントでも、CM サーバーから見ると、GUID が同じなので、同じ端末と見なしてしまいます。
どのような時に問題が発生するの?
CM への登録が終わってしまっている CM クライアントを複製した場合に発生します。
つまり、以下のような場合です。
- CM 登録済み OS のイメージをキャプチャして、キッティングの際のベースイメージとした場合。
- CM 登録済みの仮想マシンを仮想マシンテンプレートとした場合。
- CM 登録済みの仮想マシンをクローンした場合。
- CM 登録済みのバックアップを他のマシンにリストアし、並行稼働した場合。
特に VDI をご利用されている環境で多く発生している印象です。
どのように問題を察知すれば良いの?
CM のデータベーステーブル System_HIST には CMが管理している端末についてホスト名が変わった際の履歴が残っております。このテーブルにて、MachineID と SMSID が同じなのに、ホスト名が頻繁に切り替わっているものがあった場合、GUID 重複が発生している可能性が非常に高いと判断できます。なお、本テーブルにて MachineID と SMSID が同じレコードの中で、TimeKey が最も古い端末が複製元となっている可能性が高いため、調査の参考にして頂ければと存じます。
CM 管理者の方には本テーブル内容の確認を定期運用作業に組み込むことをお勧めいたします。
どのように問題を解決すれば良いの?
環境の複製先と、複製元の端末にて以下の対処を実施ください。
複製先端末
以下の手順で対処を実行ください。
- CCMExec サービスを停止します。
- 以下の Powershell スクリプトを実行します。
1
2
3Get-WMIObject -Namespace root\CCMVDI -Class CCM_VDI_Identity_Store_Configuration -Filter “Name<>’RDV’” | Remove-WMIObject
Remove-Item -Path HKLM:\Software\Microsoft\SystemCertificates\SMS\Certificates -Recurse -Force
Remove-Item -Path C:\Windows\SMSCFG.ini -Force -ErrorAction SilentlyContinue - CCMExec サービスを起動します。
複製先端末が複数の場合の対処
- 重複している GUID を持つ端末を集めたデバイスコレクションを作成します。下記の WQL クエリをご利用ください。
1
select * from SMS_R_System where SMS_R_System.SMSUniqueIdentifier = '[重複 GUID を起こしている GUID]'
- 上記コレクションに対して単体対処の時に利用したPowershellをパッケージで配布します。パッケージ配布の際のコマンドは以下を指定ください。
1
powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -WindowStyle Hidden -File XXXX.ps1
- パッケージを配布されたクライアントは再起動され次第、新しい GUID を順次取得します。配布対象のコレクションに所属するクライアント数が少なくなっていけば事象解消し始めていることになります。
複製元端末 (マスターイメージ)
- 下記ブログにてご案内している手順で CM クライアントを完全アンインストールください。
- (Citrix VDI 端末のマスターイメージの場合) Powershellを管理者権限で開き、以下を実行ください。
1
Get-WmiObject -Namespace root\CCMVDI -Class CCM_VDI_Identity_Store_Configuration -Filter "Name='Citrix'" | Remove-WmiObject
- CM コンソールから、重複していた GUID を持つデバイスのレコードを削除します。
- 以下のマスターイメージ用の CM クライアント インストール手順を実施します。
- マスターイメージを取得します。
マスターイメージ の再取得手順
以下のブログ記事の手順をご参照ください。
MECM クライアントがインストールされた PC でマスター イメージを新規取得・再取得する手順
B. 既に MECM クライアントがインストールされている状態から、マスター イメージの “再” 取得を行う手順
どのように問題を予防すれば良いの?
恐れながら基本的に運用による予防をお願い致します。マスターイメージをキャプチャされる際は、CM に登録されないように。また、CMクライアントで管理されている実利用の端末(検証用途ではない)が仮想マシンで
作成されている場合、安易に仮想マシンの複製を行わないようにご対応ください。