適用対象: Windows Server 2022、Windows Server 2019、Windows Server 2016
DCDiag.exe
は、フォレストまたは企業内のドメイン コントローラー (DC) の状態を分析し、トラブルシューティングに役立つ問題を報告します。 DCDiag は、エンド ユーザー レポート プログラムとして、システムの異常な動作を特定する方法に関する詳細な知識をカプセル化するコマンド ライン ツールです。
既定では、DCDiag は DC にログインするとすぐに使用できます。 DCDiag にアクセスする別の方法は、デバイスにリモート サーバー管理ツール (RSAT) をインストールすることです。 DCDiag は、管理者特権のコマンド プロンプト (CMD) または PowerShell から管理者権限で実行する必要があります。
DCDiag は、テストを実行するためのフレームワークと、システムのさまざまな機能領域を検証するための一連のテストで構成されています。 このフレームワークでは、エンタープライズ、サイト、単一サーバーなど、ユーザーからのスコープ ディレクティブに従ってテストされる DC を選択します。 DC の全体的な接続性と応答性のテストには、次の検証が含まれます。
- DC は DNS に配置できます
- DC がインターネット制御メッセージ プロトコル (ICMP) ping に応答する
- DC は、インスタンスにバインドすることでライトウェイト ディレクトリ アクセス プロトコル (LDAP) 接続を許可します
- DC では、DsBindWithCred 関数を使用して AD RPC インターフェイスにバインドできます。
注
ICMP をブロックすると、DCDiag が意図したとおりに機能できなくなります。 ICMP のブロックはネットワークのインターネット エッジで推奨されますが、内部的に ICMP トラフィックをブロックすると、従来のグループ ポリシー、ブラック ホール ルーターの検出、検出オプションがないために非効率的な MTU サイズが壊れる管理上の問題が発生します。
ping.exe
やtracert.exe
などのトラブルシューティング ツールも影響を受ける。
DCDiag 構文
dcdiag [/s:<DomainController>] [/n:<NamingContext>] [/u:<Domain>\<UserName> /p:{* | <Password> | ""}] [{/a | /e}] [{/q | /v}] [/i] [/f:<LogFile>] [/c [/skip:<Test>]] [/test:<Test>] [/fix] [{/h | /?}] [/ReplSource:<SourceDomainController>]
DCDiag では、次のパラメーターを使用します。
パラメーター | 説明 |
---|---|
/s:<DomainController> |
コマンドを実行するサーバーの名前を指定します。 このパラメーターが指定されていない場合、テストはローカル ドメイン コントローラーに対して実行されます。 このパラメーターは、ローカルでのみ実行できる DcPromo および RegisterInDns テストでは無視されます。 |
/n:<NamingContext> |
テストする名前付けコンテキストとして NamingContext を使用します。 ドメインは、NetBIOS、ドメイン ネーム システム (DNS)、または識別名形式で指定できます。 |
/u:<Domain> \<UserName> /p:{<Password> |""} |
Domain\UserName を使用します。 DCDiag は、ログオンしているユーザー (またはプロセス) の現在の資格情報を使用します。 代替資格情報が必要な場合は、パスワードとしてパスワードを使用してバインドするための資格情報を指定するには、次のオプションを使用します。空または null のパスワードには引用符 ("") を使用します。 パスワードの入力を求めるメッセージを表示するには、ワイルドカード文字 (*) を使用します。 |
/ある | この AD DS サイト上のすべてのサーバーをテストします。 |
/e | 企業内のすべてのサーバーをテストします。 これにより、 /a がオーバーライドされます。 |
/q | 静か。 エラー メッセージのみを出力します。 |
/v | 冗長。 拡張情報を出力します。 |
/修理する | MachineAccount テストにのみ影響します。 このパラメーターにより、テストでドメイン コントローラーのマシン アカウント オブジェクトのサービス プリンシパル名 (SPN) が修正されます。 |
/f:<LogFile> |
すべての出力をログ ファイルにリダイレクトします。 |
/c | 総合的。 既定以外のテストを含め、DCPromo と RegisterInDNS を除くすべてのテストを実行します。 必要に応じて、このパラメーターを /skip パラメーターと共に使用して、指定したテストをスキップできます。次のテストは既定では実行されません。
|
/h または /? | コマンド プロンプトにヘルプを表示します。 |
/試験:<Test> |
このテストのみを実行します。
/skip パラメーターを使用して接続テストをスキップすることはできません。 |
/ReplSource:<SourceDomainController> |
コマンドを実行するドメイン コントローラーとソース ドメイン コントローラーの間の接続をテストします。 (このパラメーターは CheckSecurityError テストに使用されます)。 SourceDomainController は、実際または潜在的な接続オブジェクトで表される、レプリケーションのソース ドメイン コントローラーとなる実際または潜在的なサーバーの DNS 名、NetBIOS 名、または識別名です。 |
DCDiag の既知のテスト
次の表に、特に指定がない限り、既定で実行される既知のテストを示します。
テスト | 説明 |
---|---|
広告 | 各ドメイン コントローラーが、実行できるロール内で自身をアドバタイズするかどうかを確認します。 このテストでは、ドメイン コントローラーを特定するためにコンピューターによって使用されるパブリック DsGetDcName 関数が、すべての DC を正しく見つけることを検証します。 Netlogon サービスが停止しているか、開始に失敗した場合、このテストは失敗します。 キー配布キー (KDC) サービスが停止すると、DsGetDcName から返されるフラグに KDC が含まれていないため、Advertising テストは失敗します。 TCP および UDP 経由のポート 88 がファイアウォールでブロックされている場合、KDC が Kerberos チケット要求に応答できないにもかかわらず、Advertising テストは合格します。 |
チェックSDRefDom | すべてのアプリケーション ディレクトリ パーティションに適切なセキュリティ記述子参照ドメインがあることを確認します。 このテストでは、LDAP を使用し、cn=partitions,cn=configuration,dc=<forest root domain>msDS-SDReferenceDomain 属性に正しいドメイン名が含まれていることを検証します。 |
チェックセキュリティエラー | テストは既定では実行 されません 。 LDAP、RPC、RPC over SMB、ICMP を使用したセキュリティ ポリシーまたはセキュリティ データベースの問題など、DC のセキュリティ コンポーネントに関連するエラーに関するさまざまなセキュリティ チェックを実行します。 次の項目がチェックされます。
/ReplSource パラメーターが追加されると、パートナーは次のことも確認します。
|
接続性 | DSA と DNS が登録され、LDAP と RPC を使用して到達可能であることを確認します。 |
CrossRefValidation(クロスレファクションバリデーション) |
内にある<の一覧を相互参照で取得し LDAP を使用した > テストと同様に検証します。 このテストでは、nCName、dnsRoot、nETBIOSName、systemFlags の各属性を次のように検索します。
|
カットオフサーバー | AD レプリケーションをテストして、パートナー間の接続オブジェクトが動作しない DC がないことを確認します。 どの DC からも受信または送信をレプリケートできないサーバーは、DC でのレプリケーションをトリガーする DsReplicaSyncAll 関数を使用して "切断" と見なされます。 スケジュールを使用してクリーンな状態に保たれている実装が不十分な WAN リンクがある場合は、 /e パラメーターを慎重に使用してください。 サーバーに接続できない場合、またはネットワーク上の LDAP で使用できない場合は、 /v パラメーターが指定されている場合でも、エラーやテスト結果は提供されません。 このテストでは RPC を使用します。 |
DcPromo (英語) | インフラストラクチャがデバイスを DC に昇格するために必要な要件を満たしているかどうかを、クライアント DNS 設定で指定されたサーバーに対してテストします。 このテストでは、ネットワーク上の DNS を使用し、以下を確認します。
次の引数が必要です。
|
DFSRベント | このテストでは、過去 24 時間の DFSR イベント ログの警告とエラー エントリを確認して、分散ファイル システム レプリケーション (DFSR) サービスの正常性を検証します。 このテストでは、RPC と EventLog リモート処理プロトコルを使用します。 |
DNS(ドメイン・ネーム・システム) | DNS、RPC、および WMI プロトコルを使用して、エンタープライズ全体の DNS 正常性チェックをテストします。 既定では実行されず、明示的に要求する必要があります。 DNS 構文を参照してください。 |
FrsEventの | SysVol 共有のレプリケーションが失敗するとポリシーの問題が発生する可能性があるため、過去 24 時間のファイル レプリケーション サービス (FRS) イベント ログにエラーがあるかどうかを確認します。 このテストでは、RPC と EventLog リモート処理プロトコルを使用します。 |
サイト間 | サイト間レプリケーションを妨げたり一時的に保持したりする障害をチェックし、KCC の復旧にかかる時間を予測します。 このテストでは、DRS 関数を使用して、特定のサイトまたはすべてのサイト内のサイト間 AD レプリケーションを妨げる条件を確認します。
/a パラメーターまたは /e パラメーターは、サイトを提供しないとテストの実行が許可されますが、実際のテストはスキップされるため、使用する必要があります。 このテストでは、ネットワーク経由で RPC を使用してレプリケーションの側面をテストし、レジストリ接続に NTDS オーバーライド エントリを確認するよう求めます。 LDAP は、接続情報の検索にも使用されます。 |
Kccイベント | このテストでは、過去 15 分間に Directory Services イベント ログで生成されたエラーと警告について、DC 上の KCC に対してクエリを実行します。 15 分のしきい値は、DC の Repl トポロジ更新期間 (秒) レジストリ値に関係なく行われます。 ファイアウォール規則によってこのテストが失敗する原因となっている場合は、テストの成功を許可する規則の有効化に関する KB2512643 を参照してください。 このテストでは、EVENTLog リモート処理プロトコルと共に RPC を使用します。 |
KnowsOfRoleHolders (英語) | このテストでは、5 つのフレキシブル シングル マスター操作 (FSMO) ロールに関する DC の知識が返されますが、すべての DC の知識で一貫性がチェックされるわけではありません。
/e パラメーターを使用すると、比較用のデータが提供されます。 このテストでは、RPC を使用してディレクトリ レプリケーション サービス (DRS) 関数内の DSListRoles を返します。 |
マシンアカウント | マシン アカウントが正しく登録されているかどうか、およびサービスが LDAP と RPC over SMB を使用してアドバタイズされているかどうかを確認します。次のチェックを含みます。
このテストには、次の 2 つの修復オプションもあります。
|
NCシナリオ | ソース DC のすべての名前付けコンテキスト (スキーマ、構成など) に対するアクセス許可をチェックして、DC 間のレプリケーションと接続が機能することを検証します。 これにより、エンタープライズ ドメイン コントローラーと管理者グループに、CheckSecurityError 内で実行されるのと同じテストである適切な最小アクセス許可が付与されます。 このテストでは LDAP を使用します。 |
NetLogons(ネットログオン) | DCDiag を実行しているユーザーが、セキュリティ エラーなしで SYSVOL 共有と NETLOGON 共有に接続して読み取ることができることを検証します。 また、 管理者、 認証済みユーザー、および Everyone グループが、DC 上のネットワーク特権 からこのコンピューターへのアクセス 権を持っていることも確認します。 |
オブジェクトレプリケート | マシン アカウントとディレクトリ システム エージェント (DSA) オブジェクトがレプリケートされていることを確認します。 既定では、2 つのオブジェクトが検証され、各 DC に存在し、他のすべての DC で最新の状態になっています。
/objectdn:dn パラメーターと共に /n:nc パラメーターを使用して、チェックする追加のオブジェクトを指定できます。 このテストは、DRS 関数で RPC を使用して行われます。 |
アウトバウンドセキュアチャネル | このテストは既定では実行されません。 セキュリティで保護されたチャネルが、ドメイン内のすべてのドメイン コントローラーから、 /testdomain パラメーターで指定されたドメインに存在することを確認します。
/nositerestriction パラメーターを指定すると、DCDiag がサイト内のドメイン コントローラーにテストを制限できなくなります。 |
登録番号 | ディレクトリ サーバーがディレクトリ サーバー ロケーター DNS レコードを登録できるかどうかをテストします。 他のコンピューターが<Active_Directory_Domain_DNS_Name> ドメインのこのディレクトリ サーバーを見つけるには、これらのレコードが DNS に存在する必要があります。 これにより、既存の DNS インフラストラクチャに変更が必要かどうかも報告されます。 パラメーター /DnsDomain :<Active_Directory_Domain_DNS_Name> を使用する必要があります。 このテストでは、次の項目がチェックされます。
|
レプリケーション | このテストでは、次の場合に、指定した DC 上のすべての名前付けコンテキストについて、すべての AD レプリケーション 接続オブジェクトをチェックします。
|
リッドマネージャー | 相対識別子 (RID) マスターにアクセスできるかどうかを確認し、次の場合に確認します。
DC がセキュリティ プリンシパル (ユーザー、コンピューター、グループ) を作成できるだけでなく、ドメイン内でさらに DC を昇格させるには、ロール所有者がオンラインでアクセスできる必要があります。 このテストでは、LDAP と RPC を使用します。 |
サービス | このテストでは、さまざまな AD 依存サービスが実行され、アクセス可能であり、特定の開始の種類に設定されていることを検証します。 特に指定がない限り、これらのサービスは自動的に開始され、共有プロセスで実行されます。
これらのサービス名は、レジストリ パス HKEY_LOCAL_MACHINE\System\CurrentControlSet\Servicesに一覧表示されます。 このテストでは、RPC と Service Control Manager リモート プロトコルを使用します。 |
SysVolCheckの | このテストでは、DC Netlogon SysVolReady レジストリ キーを読み取って、SYSVOL の準備ができていることを検証します。 このテストに合格するには、値名が 1 である必要があり、FRS または DFSR でレプリケートされた SYSVOL で動作します。 これは CheckSecurityError によって実行されるため、SYSVOL 共有と NELOGON 共有にアクセスできるかどうかを確認しません。 このテストでは、SMB 経由の RPC を使用します。 |
システムログ | エラーと警告について、過去 60 分間のエントリの読み取りと書き込みを行って、システム イベント ログの正常性を検証します。 このテストでは、RPC と Service Control Manager リモート プロトコルを使用します。 |
トポロジ | 生成された AD レプリケーション トポロジが、すべての DSA に対して完全に接続されていることを確認します。 このテストは既定では実行されないため、明示的に実行する必要があります。 次の項目がチェックされます。
このテストでは、RPC、LDAP、 DsReplicaSyncAll をフラグ DS_REPSYNCALL_DO_NOT_SYNCと共に使用します。つまり、実際に変更をレプリケートすることなく、レプリケーション トポロジを分析および検証します。 このテストでは、レプリケーション パートナーの可用性は検証されません。 パートナーをオフラインにしても、このテストでエラーは発生しません。 また、スケジュールが閉じられているかどうかもテストされないため、レプリケーションが妨けられます。 これらのアクティブなレプリケーションの結果を確認するには、 テスト レプリケーション または CutoffServers を使用します。 |
VerifyEnterpriseReferences (エンタープライズリファレンス) | 指定されたシステム参照が、各ドメイン コントローラー上の企業内のすべてのオブジェクトにわたって FRS およびレプリケーション インフラストラクチャに対してそのままであることを確認します。 これには、次の DC サイト属性とオブジェクトが含まれます。
2 つの DFSR テストは、ドメインの機能レベルが Windows Server 2008 以降の場合にのみ実行されます。 つまり、 DFSR が SYSVOL に移行されていない場合は、予期されるエラーが発生します。 このテストでは LDAP が使用され、指定された DC のみが接続されます。 |
VerifyReferences(リファレンスの確認) | 特定のシステム参照が FRS およびレプリケーション インフラストラクチャに対してそのままであることを確認します。 このテストでは、次の DC サイト属性とオブジェクトを含む、1 つの DC のコンピューター参照属性を検証します。
このテストでは LDAP が使用され、 VerifyEnterpriseRefrences テストに似ていますが、パーティションの相互参照やその他すべての DC オブジェクトがチェックされない点が異なります。 |
VerifyReplicas (レプリカの検証) | すべてのアプリケーション ディレクトリ パーティションが、すべてのレプリカ サーバーで完全にインスタンス化されていることを確認します。 指定されたサーバーが、パーティション コンテナー内の crossref 属性で指定されたアプリケーション パーティションをホストしていることを確認します。 これは、出力データを表示せず、ホスティングを検証する点を除いて 、CheckSDRefDom と同様に動作します。 このテストでは LDAP を使用します。 |
注
ネットワークに登録されているドメイン コントローラーに対する接続チェックを行い、DNS、LDAP、RPC などの他のリソースと接続 することはできません 。
DNS 構文
dcdiag /test:DNS [/DnsBasic | /DnsForwarders | /DnsDelegation | /DnsDynamicUpdate | /DnsRecordRegistration | /DnsResolveExtName [/DnsInternetName:<InternetName>] | /DnsAll] [/f:<LogFile>] [/x:<XMLLog.xml>] [/xsl:<XSLFile.xsl> or <XSLTFile.xslt>] [/s:<DomainController>] [/e] [/v]
DNS テストでは、次のパラメーターを使用します。
パラメーター | 説明 |
---|---|
/test:DNSの | 指定した DNS テストを実行します。 テストが指定されていない場合は、既定で /DnsAll 。 |
/Dnsベーシック | ネットワーク接続、DNS クライアント構成、サービスの可用性、ゾーンの存在など、基本的な DNS テストを実行します。 |
/Dnsフォワーダー |
/DnsBasic テストを実行し、フォワーダーの構成も確認します。 |
/DnsDelegation |
/DnsBasic テストを実行し、適切な委任をチェックします。 |
/DnsDynamicUpdateの |
/DnsBasic テストを実行し、Active Directory ゾーンで動的更新が有効になっているかどうかを判断します。 |
/DnsRecordRegistration |
/DnsBasic テストを実行し、アドレス (A)、正規名 (CNAME)、既知のサービス (SRV) リソース レコードが登録されているかどうかを確認します。 さらに、テスト結果に基づいてインベントリ レポートを作成します。 |
/DnsResolveExtName [/DnsInternetName:\<InternetName> ] |
/DnsBasic テストを実行し、InternetName の解決も試みます。
/DnsInternetName が指定されていない場合は、<www.microsoft.com>名前の解決を試みます。
/DnsInternetName が指定されている場合は、ユーザーが指定したインターネット名の解決を試みます。 |
/DnsAll |
/DnsResolveExtName テストを除くすべてのテストを実行し、レポートを生成します。 |
/f:<LogFile> |
すべての出力をログ ファイルにリダイレクトします。 |
/s:<DomainController> |
ドメイン コントローラーに対してテストを実行します。 このパラメーターが指定されていない場合、テストはローカル ドメイン コントローラーに対して実行されます。 |
/e | Active Directory フォレスト内のすべてのドメイン コントローラーに対して、 /test:DNS で指定されたすべてのテストを実行します。 |
/v | 冗長。 エラーと警告に関する情報に加えて、成功したテスト結果に関する拡張情報を表示します。/v パラメーターを使用しない場合は、エラーと警告の情報のみを提供します。 概要テーブルでエラーまたは警告が報告された場合は、 /v スイッチを使用します。 |
/x です。<XMLLog.xml> |
すべての出力を xmllog.xmlにリダイレクトします。 このパラメーターは、 /test:DNS オプションでのみ機能します。 |
/xsl:<XSLFile.xsl> または /xsl: <XSLTFile.xslt> |
指定したシートを参照する処理命令を追加します。 このパラメーターは、 /test:DNS /x:<XMLLog.xml オプションでのみ機能します。 |
注
/e
パラメーターを使用する場合、大企業では DNS テストの実行時間が重要になる可能性があります。 オフラインのドメイン コントローラーと DNS サーバーは、RPC やその他のプロトコルのタイムアウト期間が長いため、実行時間が長くなります。
例示
接続テスト
ローカル ドメインで一連の接続テストを実行するには、次のコマンドを実行します。
dcdiag
正常な接続テスト出力:
Directory Server Diagnosis
Performing initial setup:
Trying to find home server...
Home Server = MapleWaffle-WS22
* Identified AD Forest.
Done gathering initial info.
Doing initial required tests
Testing server: Default-First-Site-Name\MAPLEWAFFLE-WS2
Starting test: Connectivity
......................... MAPLEWAFFLE-WS2 passed test Connectivity
Doing primary tests
Testing server: Default-First-Site-Name\MAPLEWAFFLE-WS2
Starting test: Advertising
......................... MAPLEWAFFLE-WS2 passed test Advertising
Starting test: FrsEvent
......................... MAPLEWAFFLE-WS2 passed test FrsEvent
Starting test: DFSREvent
......................... MAPLEWAFFLE-WS2 passed test DFSREvent
Starting test: SysVolCheck
......................... MAPLEWAFFLE-WS2 passed test SysVolCheck
Starting test: KccEvent
......................... MAPLEWAFFLE-WS2 passed test KccEvent
Starting test: KnowsOfRoleHolders
......................... MAPLEWAFFLE-WS2 passed test KnowsOfRoleHolders
Starting test: MachineAccount
......................... MAPLEWAFFLE-WS2 passed test MachineAccount
Starting test: NCSecDesc
......................... MAPLEWAFFLE-WS2 passed test NCSecDesc
Starting test: NetLogons
......................... MAPLEWAFFLE-WS2 passed test NetLogons
Starting test: ObjectsReplicated
......................... MAPLEWAFFLE-WS2 passed test ObjectsReplicated
Starting test: Replications
......................... MAPLEWAFFLE-WS2 passed test Replications
Starting test: RidManager
......................... MAPLEWAFFLE-WS2 passed test RidManager
Starting test: Services
......................... MAPLEWAFFLE-WS2 passed test Services
Starting test: SystemLog
......................... MAPLEWAFFLE-WS2 passed test SystemLog
Starting test: VerifyReferences
......................... MAPLEWAFFLE-WS2 passed test VerifyReferences
Running partition tests on : ForestDnsZones
Starting test: CheckSDRefDom
......................... ForestDnsZones passed test CheckSDRefDom
Starting test: CrossRefValidation
......................... ForestDnsZones passed test CrossRefValidation
Running partition tests on : DomainDnsZones
Starting test: CheckSDRefDom
......................... DomainDnsZones passed test CheckSDRefDom
Starting test: CrossRefValidation
......................... DomainDnsZones passed test CrossRefValidation
Running partition tests on : Schema
Starting test: CheckSDRefDom
......................... Schema passed test CheckSDRefDom
Starting test: CrossRefValidation
......................... Schema passed test CrossRefValidation
Running partition tests on : Configuration
Starting test: CheckSDRefDom
......................... Configuration passed test
CheckSDRefDom
Starting test: CrossRefValidation
......................... Configuration passed test
CrossRefValidation
Running partition tests on : corp
Starting test: CheckSDRefDom
......................... corp passed test CheckSDRefDom
Starting test: CrossRefValidation
......................... corp passed test CrossRefValidation
Running enterprise tests on : corp.contoso.com
Starting test: LocatorCheck
......................... corp.contoso.com passed test
LocatorCheck
Starting test: Intersite
......................... corp.contoso.com passed test
Intersite
特定のドメイン コントローラーで一連の接続テストを実行するには、次のコマンドを実行します。
dcdiag /s:<DomainControllerName>
問題が発生しない場合は、ローカル テストと同様の結果が生成されます。
ログ ファイルへの出力
DCDiag は、次のコマンドを実行して、出力結果をテキスト ファイルに保存できます。
dcdiag /s:<DomainControllerName> /f:<FileName.txt>
<FilePath>
が指定されていない場合、結果は既定でC:\Users\<UserName>\<FileName.txt>
に保存されます。
特定の場所に保存するには、次のコマンドを実行します。
dcdiag /s:<DomainControllerName> /f:<DriveLetter>\<FilePath>\<FileName.txt>