GPMC を使用した GPO のインポートが "ディレクトリが空ではありません" で失敗する

この記事では、グループ ポリシー管理コンソール (GPMC) を使用して保存された GPO をインポートできない問題の解決策について説明します。

適用対象: サポートされているバージョンの Windows Server
元の KB 番号: 2667462

症状

グループ ポリシー管理コンソール (GPMC) を使用して保存された GPO をインポートすると、"ディレクトリが空ではありません" というエラー ダイアログが表示され、散発的に失敗します。

原因

ポリシー設定のインポート中に、GPMC は複数の一時ディレクトリ (ステージング) を作成し、古い設定を別のフォルダーにバックアップします。

SysVol 共有でインポートが行われると、DFSR レプリケーションがインポート シーケンスに干渉し、上記のエラーが表示される可能性があります。

解決策 1

競合する操作が発生しないようにするには、DFSRDIAG.EXEを使用して、GPMC インポートが行われている DC でのレプリケーションを中断します。 このコマンドでは、レプリケーション グループ名、パートナー名 (この場合、インポートに使用される DC がパートナー) と、レプリケーションを中断する時間 (分単位) を指定する必要があります。 指定した分数が経過すると、DFSR はレプリケーションを自動的に再開します。

  1. [管理コマンド プロンプト] ウィンドウを開きます。

  2. 次のコマンドを実行します。DFSRDIAG StopNow /rgname:"Domain System Volume" /partner:<DcName> /time:<number of minutes to suspend replication>

    このコマンドでは、<DcName> はドメイン コントローラー名を表し、<数数>レプリケーションが中断される時間を表します。

  3. グループ ポリシーをインポートします。

DFSR は、レプリケーションが停止されたときにイベント 5106 をログに記録し、再開すると再度ログに記録します。 これらのイベントを使用して、サービスの状態を監視できます。

レプリケーションが一時停止されている場合のイベント 5106:

ログ名: DFS レプリケーション
ソース: DFSR
イベント ID: 5106
タスク カテゴリ: なし
レベル: 情報
キーワード: クラシック
ユーザー: N/A
説明:
partner <Dc Name> への接続のレプリケーション モードが変更されました。

追加情報:
前のレプリケーション モード: 構成されたスケジュールに従う
現在のレプリケーション モード: レプリケーションの停止
現在の帯域幅使用量: フル
現在のモードの期間 (分): 5
接続 ID: 79E6D60D-6044-4775-A9BE-D98DAF557BD6
レプリケーション グループ ID: ドメイン システム ボリューム

レプリケーションが再開されたときのイベント 5106:

ログ名: DFS レプリケーション
ソース: DFSR
イベント ID: 5106
タスク カテゴリ: なし
レベル: 情報
キーワード: クラシック
ユーザー: N/A
説明:
パートナー <DC 名> への接続のレプリケーション モードが変更されました。

追加情報:
前のレプリケーション モード: レプリケーションの停止
現在のレプリケーション モード: 構成されたスケジュールに従う
現在の帯域幅の使用状況: 構成されたスケジュールに従う
現在のモードの期間 (分):
接続 ID: 79E6D60D-6044-4775-A9BE-D98DAF557BD6
レプリケーション グループ ID: ドメイン システム ボリューム

解決策 2

この問題を解決するには、インポートがより頻繁に行われる必要がある場合は、DFSR のフィルターを追加して、一時ディレクトリをレプリケーションから除外します。 これらの一時ディレクトリは次のとおりです。

  • MachineOld
  • 旧ユーザー
  • MachineStaging
  • UserStaging
  • AdmOld

DFSR フィルターを変更するには、次のように AD でこのオブジェクトを編集します。

CN=SYSVOL シェア,CN=Content,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=Contoso,DC=Com

msdfsr-directoryfilter 属性を変更します。

既存の除外の末尾に 5 つのディレクトリを追加します。次のようになります。

DO_NOT_REMOVE_NtFrs_PreInstall_Directory,NtFrs_PreExisting___See_EventLog,MachineOld,UserOld,MachineStaging,UserStaging,AdmOld

DFSR が AD から新しい設定を読み取るようにするには、 dfsrdiag PollAD実行します。

データ コレクション

Microsoft サポートからのサポートが必要な場合は、次の手順を使用して情報を収集することをお勧めします。

  1. TSS をダウンロードし、C:\tss フォルダーに展開します。

  2. 管理者特権の PowerShell コマンド プロンプトから C:\tss フォルダーを開きます。

    Windows PowerShell 統合スクリプト環境 (ISE) は使用しないでください。

  3. 次のコマンドレットを実行します。

    Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
    
    .\TSS.ps1 -Scenario ADS_GPOEx -SDP Dom 
    
  4. 完了したら、問題とタイプ Y を 再現します。

トレースは、 C:\MS_DATA フォルダー内の圧縮ファイルに格納されます。 サポート ケースが作成されたら、このファイルをセキュリティで保護されたワークスペースにアップロードして分析できます。