クライアント コンピューターは、イメージング中に不明なコンピューター オブジェクトの Configuration Manager GUID を盗むことができます
この記事では、不明なコンピューター オブジェクトの Configuration Manager 一意識別子 (GUID) が、イメージ化されているクライアント コンピューターによって取得される問題を解決するための情報を提供します。
元の製品バージョン: Configuration Manager (Current Branch)
元の KB 番号: 4471061
現象
Configuration Manager Current Branch バージョン 1702 には、 Previous ボタンを使用して、Microsoft Windows プレインストール環境 (Windows PE) で実行するときにタスク シーケンス ウィザードで失敗したタスク シーケンスを再試行できる新機能が含まれています。
この機能の詳細については、「 タスク シーケンスが失敗したときに前のページに戻るを参照してください。
この機能では、次の問題が発生しました。
Previous ボタンを選択すると、イメージ化されているクライアント PC は、使用されている不明なコンピューター オブジェクト (x64 不明なコンピューターまたは x86 不明なコンピューター) の Configuration Manager 一意識別子 (GUID) を盗むことができます。
この問題は、Configuration Manager Current Branch バージョン 1702 の Update ロールアップで修正されました。
この問題は、以降のすべてのバージョンの Configuration Manager Current Branch でも修正されています。
ただし、Configuration Manager Current Branch バージョン 1702 以降では、メディアまたはプリブート実行環境 (PXE) から起動された不明なコンピューターで、対象となるタスク シーケンスが見つからない可能性があります。 このシナリオでは、次のエラー メッセージがSMSTS.logに記録されます。
このコンピューターで使用できるタスク シーケンスはありません。 このコンピューターに少なくとも 1 つのタスク シーケンスがアドバタイズされていることを確認してください。
指定されていないエラー (エラー: 80004005;ソース: Windows)
この問題は、不明なコンピューターで [実行するタスク シーケンスの選択 ページの Previous ボタンが選択されている場合に発生する可能性があります。
この問題は、以降のすべてのバージョンの Configuration Manager Current Branch でも修正されています。
Configuration Manager Current Branch バージョン 1702 で更新プログラムのロールアップを適用するか、新しいバージョンの Configuration Manager にアップグレードしても、問題は引き続き発生します。
原因
この問題は、Configuration Manager Current Branch バージョン 1702 以降の Configuration Manager Current Branch バージョンの更新プログラムのロールアップの修正プログラムによって、この問題が今後のみ発生しないため、引き続き発生する可能性があります。 現在環境内に問題が存在する場合、この問題は解決されません。
そのため、バージョン 1702 更新プログラムのロールアップ以降のバージョンが適用された後でも、Configuration Manager Current Branch バージョン 1702 以降で引き続き問題が発生する可能性があります。 これは、次の手順を実行しない限り当てはまります。
- 配布ポイントのブート イメージを更新します。
- 更新されたイメージを使用して、ブート メディアを再作成します。
- GUID を盗んだクライアント PC を正しくクリーニングします。
解決方法
警告
不明なコンピューター オブジェクトを再作成して、この問題を解決しないでください。 これにより問題が正しく解決せず、今後問題が再発するのを防ぐことはありません。 さらに、1 つのサイトに対して複数の不明なコンピューター オブジェクトがある環境で発生する既知の問題があります。 不明なコンピューター オブジェクトを再作成してこの問題を解決しようとしたことがある場合は、「 重複する不明なコンピューター オブジェクトを削除するを参照してください。
この問題を解決し、環境に戻らないようにするには、次の手順に従います。
環境内のすべてのブート イメージを更新します。 これを行うには、Configuration Manager コンソールでイメージを右クリックし、 Update 配布ポイントを選択します。 これにより、修正プログラムを含む更新された Configuration Manager バイナリがブート イメージに格納されます。 詳細については、「 ブート イメージを使用して配布ポイントを更新するを参照してください。
環境内でメディアを使用する場合は、配布ポイント上のすべてのブート イメージを更新した後、環境内のすべてのメディアを再作成します。 これにより、修正プログラムを含む更新されたブート イメージが、環境内で使用されているメディア内に存在することを確認できます。
古いブート イメージを含むメディアが使用されないようにするには、Configuration Manager コンソールの Administration>Security>Certificates ノードでそれらのブート イメージの証明書をブロックできます。 問題が再発しないように、手順 1 でブート イメージが更新される前に作成されたすべてのメディアのすべての証明書をブロックすることをお勧めします。 メディアが作成された日付は、 開始日 列に表示されます。
メディアの作成方法の詳細については、「 タスク シーケンス メディアの作成」を参照してください。
GUID を盗んだクライアント コンピューターは、正しくクリーンアップする必要があります。
GUID を盗んだクライアントを正しくクリーンアップするには、次の手順に従います。
GUID を取得したコンピューターを特定します。 これを行うには、不明なコンピューター オブジェクト (通常は x64 不明なコンピューター) のプロパティを調べ、 Configuration Manager の一意の識別子の値を書き留め、Configuration Manager コンソールでクエリを実行して、同じ GUID を持つコンピューター オブジェクトを識別します。 これらの手順はすべてコンソールから実行できます。 これを行うために SQL Server データベースに移動する必要はありません。
盗まれた GUID を取得したコンピューターを特定したら、そのコンピューターにリモート接続し、Configuration Manager クライアントを完全にクリーンアップします。 これには、単にクライアントをアンインストールする以上のものが含まれます。 代わりに、手順 3 から 7 に従う必要があります。
クライアント コンピューターの
C:\Windows\CCMSetup
で、管理者特権のコマンド プロンプトでCCMSetup.exe /uninstall
コマンドを実行します。CCMSetup の実行が完了するまで、 Task Manager を監視します。 ccmsetup.log ファイルを再確認して、クライアントが正しくアンインストールされたことを確認します。
クライアント コンピューターで、次のディレクトリを削除します。
- C:\Windows\CCM
- C:\Windows\CCMSetup
Note
これらのディレクトリを完全に削除するには、コンピューターを再起動する必要があります。
クライアント コンピューターで、次のレジストリ キー (存在する場合) を削除します。
HKEY_LOCAL_MACHINE\Software\Microsoft\CCM
HKEY_LOCAL_MACHINE\Software\Microsoft\CCMSetup
HKEY_LOCAL_MACHINE\Software\Microsoft\SMS
クライアント コンピューターで、C:\Windows\SMSCFG.ini ファイルを削除します。
クライアント コンピューターで、Computer アカウントの Certificates コンソールの SMS>Certificates ノードのすべての証明書を削除。 これを行うには、次の手順を実行します。
管理者特権のコマンド プロンプトで
MMC.exe
を実行します。[ファイル] メニューの [スナップインの追加と削除] を選択します。
Certificates を選択し、Add を選択します。
Computer アカウントを選択し次へを選択。
[ローカル コンピューター 選択し 次に Finish を選択します。
[OK] を選択します。
Certificates>SMS>Certificates に移動します。
結果ウィンドウで、 Certificates>SMS>Certificates ノードの下に一覧表示されている各証明書を右クリックし、 Delete を選択します。 すべての証明書が削除されるまで、この手順を繰り返します。
Certificates コンソールを閉じます。
Configuration Manager コンソールから、問題のあるコンピューターのレコードを削除します。 ここでも、これを行うために SQL Server データベースに移動する必要はありません。 Configuration Manager コンソールからレコードを削除できます。 手順 1 から 8 を完了したら、必ずこれを行ってください。 この操作を最初に行うと、クライアント レポートが完全にクリーンアップされる前にバックアップされると、レコードが再作成される可能性があります。
問題のあるクライアント コンピューターに Configuration Manager クライアントを再インストールします。
重複する不明なコンピューター オブジェクトを削除する
問題を解決しようとしたときに、不明なコンピューター オブジェクトがサイトで再作成されている場合は、追加の不明なコンピューター オブジェクトを削除する必要があります。 これを実現するには、影響を受けるサイトの現在の不明なコンピューター オブジェクトをすべて削除し、その後、サイトの新しい不明なコンピューター オブジェクトのセットを作成する必要があります。 不明なコンピューター オブジェクトの削除は、SQL Server データベースからのみ完了できます。 Configuration Manager コンソールからは実行できません。
Note
複数のプライマリ サイトがある場合は、複数の不明なコンピューター オブジェクトを持つことができます。 ただし、各サイトには、アーキテクチャごとに不明なコンピューター オブジェクトが 1 つだけ必要です。 たとえば、 x64 不明なコンピューターのラベルが付いた x64 オブジェクトは 1 つだけ x86 不明なコンピューター ラベルが付いた x86 オブジェクトは 1 つだけ。
追加の不明なコンピューター オブジェクトを削除するには、次の手順に従います。
組み込みのバックアップ メンテナンス タスクを使用して、Configuration Manager サイトの現在の有効なバックアップがあることを確認します。
Configuration Manager コンソールを開きます。 複数のプライマリ サイトがある場合は、中央管理サイトに接続されている Configuration Manager コンソールを開いてお勧めします。
Configuration Manager コンソールで、 Assets and Compliance>Overview>Device Collections に移動します。
すべての不明なコンピューターコレクションをダブルクリックします。
結果ウィンドウで、Site Code 列を選択して、All Unknown Computers コレクション内のオブジェクトを並べ替えます。
個々のサイトに複数の x64 不明なコンピューター オブジェクトまたは x86 不明なコンピューター オブジェクトがあるかどうかに注意してください。
x64 不明なコンピューターオブジェクトまたは x86 不明なコンピューターオブジェクトが複数ある場合は、結果ウィンドウで列を右クリックし、リソース ID を列の一覧に追加します。
x64 Unknown Computer オブジェクトと、1 つのサイトの各 x86 Unknown Computer オブジェクトの Resource ID 値を決定します。 不明なコンピューター オブジェクトの 1 つだけが重複している場合でも、すべての不明なコンピューター オブジェクトのリソース ID をメモしてください。
サイトの不明なコンピューター オブジェクトの リソース ID を特定した後、 x64 不明なコンピューター オブジェクトと x86 不明なコンピューター オブジェクトを削除できます。
SQL Server Management Studio を開き、追加の不明なコンピューター オブジェクトをホストするサイトのデータベースに接続します。
Databases ノードを展開し、Configuration Manager データベース (通常はCM_Site_Code) を選択します。
ツール バーで、 [新しいクエリ] を選択します。
ツール バーの Execute ボタンの左側にあるドロップダウン メニューで、正しいデータベースが選択されていることを確認します。
クエリ ウィンドウで、次の SQL クエリを実行します。
SELECT C.CollectionID, C.SiteID, C.CollectionName, CM.MachineID, CM.Name FROM Collections C JOIN CollectionMembers CM ON C.SiteID = CM.SiteID JOIN UnknownSystem_DISC USD ON USD.ItemKey = CM.MachineID
このクエリでは、不明なコンピューター オブジェクトがすべて属しているすべてのコレクションが表示されます。 このクエリを使用して、Unknown Computer オブジェクトがメンバーになっているコレクションを特定します。 この情報を書き留めて、不明なコンピューター オブジェクトの新しいセットが作成されたときに、それらのオブジェクトを適切なコレクションに追加し直すことができます。 Resource ID が MachineID 列に一覧表示されます。
クエリ ウィンドウで、次の SQL クエリを実行します。
SELECT * FROM UnknownSystem_DISC WHERE ItemKey IN ('Resource_ID_1','Resource_ID_2', 'Resource_ID_3')
このクエリでは、
Resource_ID_x
は、手順 9 で決定された、サイトの各不明なコンピューター オブジェクトのリソース ID です。 たとえば、リソース ID が 2046820354 され、 2046820355されている場合、クエリは次のようになります。SELECT * FROM UnknownSystem_DISC WHERE ItemKey IN ('2046820354','2046820355')
手順 15 でクエリによって返されるレコードが正しいことを確認します。 その場合は、次のクエリを実行してレコードを削除します。
DELETE FROM UnknownSystem_DISC WHERE ItemKey IN ('Resource_ID_1','Resource_ID_2', 'Resource_ID_3')
このクエリでは、
Resource_ID_x
は、手順 9 で決定された、サイトの各不明なコンピューター オブジェクトのリソース ID です。 たとえば、リソース ID が 2046820354 され、 2046820355されている場合、削除クエリは次のようになります。DELETE FROM UnknownSystem_DISC WHERE ItemKey IN ('2046820354', '2046820355')
Note
影響を受けるサイトの不明なコンピューター オブジェクト (x64 と x86 の両方) は、そのうちの 1 つだけが複製された場合でも、必ず削除してください。
「 誤って削除された場合に不明なコンピューター オブジェクトを回復する」セクションに従って 影響を受けるサイトの新しい不明なコンピューター オブジェクトを作成します。
Configuration Manager コンソールに戻り、 Assets and Compliance>Overview>Device Collections に移動します。
すべての不明なコンピューターコレクションを右クリックし、 Update メンバーシップを選択します。
数分待ってから、 Refresh を選択します。 サイトごとに 1 つの x64 不明なコンピューター オブジェクトまたは x86 不明なコンピューター オブジェクトのみが存在することを確認します。 オブジェクトが表示されない場合は、数分待ってからやり直してください。
新しい不明なコンピューター オブジェクトが表示されたら、手順 14 で決定した適切なコレクションに追加し直します。
必要に応じて、追加のプライマリ サイトすべてに対して手順 10 から 21 を繰り返します。
誤って削除された場合に不明なコンピューター オブジェクトを再作成する
何らかの理由で、このプロセスを使用する 1 つのサイトについて、すべての不明なコンピューター オブジェクトが誤って削除された場合は、次の手順を使用して再作成できます。 これらの手順は、サイトに不明なコンピューター オブジェクトがない場合にのみ実行する必要があります。 2 つの不明なコンピューター オブジェクトのうち 1 つだけがサイトに存在する場合は、この記事の「 重複する不明なコンピューター オブジェクトを削除する 」セクションの手順を使用して、残りの不明なコンピューター オブジェクトを削除し、次の手順に従います。
不明なコンピューター オブジェクトが存在しないプライマリ サイト サーバーにサインインします。
管理者特権を持つコマンド プロンプトで、次のコマンドを実行します。
REG.exe ADD "HKLM\SOFTWARE\Microsoft\SMS\COMPONENTS\SMS_DISCOVERY_DATA_MANAGER" /v CreatedUnknownDDR /t REG_DWORD /d 0 /f
このレジストリ キーの値が更新されると、後で不明なコンピューター オブジェクトが自動的に再作成されます。 プライマリ サイト サーバー上のDDM.log ファイル内の不明なコンピューター オブジェクトの作成の進行状況を確認できます。
不明なコンピューター レコードの再作成を高速化するには、次の手順に従って SMS_DISCOVERY_DATA_MANAGER
スレッドを再起動します。
不明なコンピューター オブジェクトが見つからないプライマリ サイトで Configuration Manager コンソールを開き、 Monitoring>Overview>System Status>Component Status に移動します。
ツール バーの Start>Configuration Manager Service Manager を選択します。
Configuration Manager Service Manager でサイト コードの下のノードを展開し、Components を選択します。
結果ウィンドウで、 SMS_DISCOVERY_DATA_MANAGER を右クリックし、 Query を選択します。 スレッドは Running として表示されます。
SMS_DISCOVERY_DATA_MANAGERを右クリックし、[Stop] をクリックします。
SMS_DISCOVERY_DATA_MANAGERを右クリックし、[Query] をクリックします。
Note
スレッドは Stopped として表示されます。
SMS_DISCOVERY_DATA_MANAGERを右クリックし、[ Start] をクリックします。
SMS_DISCOVERY_DATA_MANAGERを右クリックし、[Query] をクリックします。
Note
スレッドは Running として表示されます。
Configuration Manager Service Manager ウィンドウを閉じます。
不明なコンピューター オブジェクトは、すぐに自動的に再作成されます。 このプロセスの進行状況は、プライマリ サイト サーバーのDDM.log ファイルで確認できます。