Active Directory のサーバなど、Windows サーバの現在の設定や稼働状況を調べるときは、PowerShell からコマンドを順に実行すると短時間で情報を集められます。
この記事では、私が調査のときによく使うコマンドと、その出力の見方をまとめます。
- サーバ本体の情報(OS、役割、サービス、ディスク、イベントログ、アカウント)の確認方法
- ネットワークの設定と疎通(IP、ルート、DNS、ポート、Web)の確認方法
- Active Directory の状態(DC の診断、FSMO、複製、オブジェクト、DNS、時刻、GPO)の確認方法
Windows Server 2019 Datacenter のドメインコントローラ AD-1 で、Windows PowerShell からコマンドを実行しています。ドメインは hirotanoblog.local、ドメインコントローラは AD-1、AD-2、AD-3 の 3 台です。systeminfo や dcdiag などの実行ファイルも PowerShell からそのまま実行できます。
- Windows Server 2019 はメインストリームサポートが 2024年1月9日に終わり、延長サポートは 2029年1月9日までです。
Get-EventLogは Windows PowerShell 5.1 のコマンドレットで、PowerShell 7 では削除されています。PowerShell 7 ではGet-WinEventを使います。
調査では、まずサーバ本体の情報を取り、次にネットワーク、最後に Active Directory の順で確認すると、問題がどの層にあるかを切り分けやすくなります。
この記事の画面は、実際の画面ではなく、検証時の出力から見るポイントを抜き出して描いたイメージです。IP アドレスやユーザー名などは伏せています。
- 基本情報
- ネットワーク状態確認
- Active Directory 関連確認
- ドメインコントローラー診断(dcdiag)
- FSMO役割サーバの確認(netdom query fsmo)
- フォレスト全体情報(Get-ADForest)
- ドメイン全体情報(Get-ADDomain)
- ドメインコントローラ情報(Get-ADDomainController)
- ファイル共有確認(net share)
- 複製状況の確認(repadmin /showrepl)
- 複製状況の確認(repadmin /replsummary)
- オブジェクト検索(dsquery)
- DNSサーバ情報(Get-DnsServer)
- DNSリソースレコード一覧(Get-DnsServerResourceRecord)
- 時刻同期(w32tm /query)
- GPOバックアップ
- まとめ
基本情報
システム情報(systeminfo)
ホスト名、OS、物理メモリ、ドメイン、インストール済みの更新プログラムなど、Windows の基本情報をまとめて表示します。
AD-1(Windows PowerShell)
systeminfo
1ホスト名:AD-12OS 名:Microsoft Windows Server 2019 DatacenterOS バージョン:10.0.17763 N/A ビルド 17763OS 製造元:Microsoft Corporation3OS 構成:プライマリ ドメイン コントローラー⋮ (中略)システム モデル:Virtual Machineタイム ゾーン:(UTC+09:00) 大阪、札幌、東京4物理メモリの合計:4,095 MB利用できる物理メモリ:2,181 MB⋮ (中略)5ドメイン:hirotanoblog.localログオン サーバー:\\AD-16ホットフィックス:5 ホットフィックスがインストールされています。[01]: KB5009472[02]: KB4535680[03]: KB5004424[04]: KB5011503[05]: KB5009642ネットワーク カード:1 NIC(s) インストール済みです。[01]: Microsoft Hyper-V Network Adapter IP アドレス [01]: (伏せています)
| No. | 表示 | 意味 |
|---|---|---|
| 1 | ホスト名 | コンピュータ名です。 |
| 2 | OS 名 / OS バージョン | エディション(Datacenter)とビルド番号です。ビルド 17763 は Windows Server 2019 です。 |
| 3 | OS 構成 | サーバの役割です。この検証機はドメインコントローラです。 |
| 4 | 物理メモリの合計 / 利用できる物理メモリ | 搭載メモリと、その時点で空いているメモリです。 |
| 5 | ドメイン | 参加しているドメインです。 |
| 6 | ホットフィックス | インストール済みの更新プログラム(KB 番号)です。パッチの適用状況の確認に使います。 |
役割と機能の一覧(Get-WindowsFeature)
Active Directory ドメインサービスや DNS サーバなど、Windows の役割と機能の一覧を表示します。インストール済みのものには [X] が付きます。
AD-1(Windows PowerShell)
Get-WindowsFeature
| Display Name | Name | Install State |
|---|---|---|
| [ ] Active Directory Federation Services | ADFS-Federation | Available |
| 1[X] Active Directory ドメイン サービス | AD-Domain-Services | Installed |
| [ ] Active Directory 証明書サービス | AD-Certificate | Available |
| [ ] DHCP サーバー | DHCP | Available |
| 2[X] DNS サーバー | DNS | Installed |
| [ ] Hyper-V | Hyper-V | Available |
| ⋮ (中略) | ||
| No. | 表示 | 意味 |
|---|---|---|
| 1 | [X] … Installed | インストール済みの役割・機能です。この検証機では Active Directory ドメイン サービスが入っています。 |
| 2 | [X] DNS サーバー | DNS サーバの役割も入っています。AD と同じサーバで DNS を動かしている構成です。 |
[ ] … Available | まだインストールしていない(追加できる)役割・機能です。 |
サービス一覧(Get-Service)
サービスの名前と稼働状況の一覧を表示します。動いているサービスだけを見たいときは Get-Service | Where-Object Status -eq Running のように絞り込みます。
AD-1(Windows PowerShell)
Get-Service
| 1Status | Name | DisplayName |
|---|---|---|
| Running | 2ADWS | Active Directory Web Services |
| Stopped | AJRouter | AllJoyn Router Service |
| Stopped | ALG | Application Layer Gateway Service |
| Stopped | AppIDSvc | Application Identity |
| Running | Appinfo | Application Information |
| Running | BFE | Base Filtering Engine |
| Stopped | BITS | Background Intelligent Transfer Ser… |
| ⋮ (中略) | ||
| No. | 表示 | 意味 |
|---|---|---|
| 1 | Status | サービスの状態です。Running は実行中、Stopped は停止中です。 |
| 2 | ADWS | Active Directory Web Services です。後半の Get-ADForest などの AD 用コマンドレットはこのサービスを通して情報を取るので、止まっていると AD の確認ができません。 |
ボリューム情報(Get-Volume)
ローカルのディスクボリュームの情報を表示します。ボリュームごとに、空き容量(SizeRemaining)と総容量(Size)を確認できます。
AD-1(Windows PowerShell)
Get-Volume
| DriveLetter | FriendlyName | FileSystemType | 1HealthStatus | 2SizeRemaining | Size |
|---|---|---|---|---|---|
| FAT32 | Healthy | 70.3 MB | 95 MB | ||
| C | Windows | NTFS | Healthy | 16.02 GB | 29.45 GB |
| D | Temporary Storage | NTFS | Healthy | 6.96 GB | 8 GB |
| E | Unknown | Healthy | 0 B | 0 B | |
| Recovery | NTFS | Healthy | 433.86 MB | 450 MB |
| No. | 表示 | 意味 |
|---|---|---|
| 1 | HealthStatus | ボリュームの正常性です。Healthy なら問題ありません。 |
| 2 | SizeRemaining / Size | 空き容量と総容量です。C ドライブは 29.45 GB のうち 16.02 GB が空いています。 |
イベントログ(Get-EventLog)
アプリケーション、システム、セキュリティのどのログを読むかを引数で指定して、イベントログを取得します。オプションを付けないと、そのログの全件が新しい順に表示されます。
アプリケーションログ
AD-1(Windows PowerShell)
Get-EventLog Application
| 1Index | Time | 2EntryType | 3Source | 4InstanceID | Message |
|---|---|---|---|---|---|
| 340 | 3 12 22:47 | Information | Software Protecti… | 1073758208 | ソフトウェア保護サービスの… |
| 339 | 3 12 22:46 | Information | Software Protecti… | 3221241866 | オフライン ダウンレベルの… |
| 338 | 3 12 22:00 | 0 | .NET Runtime Opti… | 1130 | .NET Runtime Optimiza… |
| 336 | 3 12 21:53 | Information | VSS | 8224 | アイドル タイムアウトに… |
| ⋮ (中略) | |||||
| No. | 表示 | 意味 |
|---|---|---|
| 1 | Index / Time | ログの通し番号と記録日時です。新しいものから順に表示されます。 |
| 2 | EntryType | 種類です。Information(情報)のほか、Warning(警告)や Error(エラー)があります。 |
| 3 | Source | イベントを書き込んだアプリケーションやサービスです。 |
| 4 | InstanceID | イベントの識別番号です。Message 欄の長いメッセージは途中で切れて表示されます。 |
システムログ
AD-1(Windows PowerShell)
Get-EventLog System
| Index | Time | EntryType | Source | InstanceID | Message |
|---|---|---|---|---|---|
| 2636 | 3 12 22:57 | Information | Service Control M… | 1073748860 | Microsoft Storage Spa… |
| 2631 | 3 12 22:50 | Information | 1NETLOGON | 5785 | このドメイン コントロー… |
| 2630 | 3 12 22:47 | Information | DfsSvc | 1073756375 | ソース ‘DfsSvc’ のイベ… |
| 2629 | 3 12 22:47 | Information | Service Control M… | 1073748860 | Software Protection… |
| ⋮ (中略) | |||||
| No. | 表示 | 意味 |
|---|---|---|
| 1 | NETLOGON | ドメインコントローラの Netlogon サービスが書いたイベントです。サービスの起動・停止(Service Control Manager)と合わせて、再起動の前後に何が起きたかを追えます。 |
セキュリティログ
セキュリティログを読むには、PowerShell を管理者として実行します。
AD-1(Windows PowerShell)
Get-EventLog Security
| Index | Time | 1EntryType | Source | 2InstanceID | Message |
|---|---|---|---|---|---|
| 11279 | 3 12 23:04 | SuccessA… | Microsoft-Windows… | 4634 | アカウントがログオフ… |
| 11278 | 3 12 23:04 | SuccessA… | Microsoft-Windows… | 4624 | アカウントが正常にログオン… |
| 11277 | 3 12 23:04 | SuccessA… | Microsoft-Windows… | 4672 | 新しいログオンに特権が… |
| ⋮ (中略) | |||||
| No. | 表示 | 意味 |
|---|---|---|
| 1 | SuccessA... | SuccessAudit(成功の監査)が途中で切れた表示です。失敗した操作は FailureAudit になります。 |
| 2 | 4624 / 4634 / 4672 | 4624 はログオン成功、4634 はログオフ、4672 は特権の割り当てです。メッセージ欄に同じ内容が出ています。 |
全件を表示すると時間がかかるので、普段は件数を指定します。Get-EventLog では -Newest、Get-WinEvent では -MaxEvents で新しいものから指定した件数だけを取得できます。
AD-1(Windows PowerShell)
Get-EventLog System -Newest 20
AD-1(Windows PowerShell)
Get-WinEvent -LogName System -MaxEvents 20
ローカルユーザ一覧(Get-LocalUser)
サーバに存在するローカルアカウントの一覧を表示します。ドメインコントローラにはローカルのアカウントデータベース(SAM)がなく、アカウントは Active Directory に保存されます。そのため、この検証機(ドメインコントローラ)では、ドメインのアカウントが表示されています。
AD-1(Windows PowerShell)
Get-LocalUser
| Name | Enabled | Description |
|---|---|---|
| (伏せています) | True | Built-in account for administering the computer/domain |
| Guest | False | Built-in account for guest access to the computer/domain |
| 1krbtgt | False | キー配布センター サービス アカウント |
| 2AD-1$ | True | |
| AD-2$ | True |
| No. | 表示 | 意味 |
|---|---|---|
| 1 | krbtgt | Kerberos のキー配布センター(KDC)が使うドメインのアカウントです。 |
| 2 | AD-1$ / AD-2$ | ドメインコントローラのコンピュータアカウントです。名前の最後に $ が付きます。 |
セキュリティグループ一覧(Get-LocalGroup)
ローカルグループの一覧を表示します。
AD-1(Windows PowerShell)
Get-LocalGroup
| Name | Description |
|---|---|
| Cert Publishers | このグループのメンバーはディレクトリに証明書を公開できます |
| RAS and IAS Servers | このグループのサーバーはユーザーのリモート アクセスのプロパテ… |
| Allowed RODC Password Replication Group | このグループのメンバーは、ドメインのすべての読み取り専用ドメイ… |
| Denied RODC Password Replication Group | このグループのメンバーは、ドメインのどの読み取り専用ドメイン… |
| No. | 表示 | 意味 |
|---|---|---|
Cert Publishers など | グループ名と説明です。ドメインコントローラで実行したので、ドメインのグループ(ドメイン ローカル グループ)が表示されています。 |
インストールされているソフトウェアの一覧
レジストリのアンインストール情報(64 ビット用と 32 ビット用の 2 か所)を読み、ソフトウェア名、バージョン、発行元、インストール日を表示します。
AD-1(Windows PowerShell)
Get-ChildItem -Path('HKLM:SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall','HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall') | % { Get-ItemProperty $_.PsPath | Select-Object DisplayName, DisplayVersion, Publisher,InstallDate}
| 1DisplayName | 2DisplayVersion | Publisher | 3InstallDate |
|---|---|---|---|
| Google Chrome | 99.0.4844.51 | Google LLC | 20220312 |
| Tera Term 4.106 | 4.106 | TeraTerm Project | 20220312 |
| No. | 表示 | 意味 |
|---|---|---|
| 1 | DisplayName | 「プログラムと機能」に表示される名前です。 |
| 2 | DisplayVersion | バージョンです。 |
| 3 | InstallDate | インストール日(YYYYMMDD)です。 |
ネットワーク状態確認
ネットワーク構成確認
ipconfig /all
ホスト名、DNS サフィックス、IP アドレス、DNS サーバなどのネットワーク情報を表示します。
AD-1(Windows PowerShell)
ipconfig /all
Windows IP 構成 1 ホスト名 . . . :AD-1 プライマリ DNS サフィックス . . . :hirotanoblog.local ノード タイプ . . . :ハイブリッド IP ルーティング有効 . . . :いいえ WINS プロキシ有効 . . . :いいえ DNS サフィックス検索一覧 . . . :hirotanoblog.local イーサネット アダプター イーサネット: 説明 . . . :Microsoft Hyper-V Network Adapter 物理アドレス . . . :(伏せています)2 DHCP 有効 . . . :はい3 IPv4 アドレス . . . :(伏せています)(優先) サブネット マスク . . . :255.255.255.0 デフォルト ゲートウェイ . . . :(伏せています) DHCP サーバー . . . :(伏せています)4 DNS サーバー . . . :::1127.0.0.1 NetBIOS over TCP/IP . . . :有効
| No. | 表示 | 意味 |
|---|---|---|
| 1 | ホスト名 / プライマリ DNS サフィックス | この 2 つをつなげた AD-1.hirotanoblog.local がサーバの FQDN です。 |
| 2 | DHCP 有効 | IP アドレスを DHCP で受け取っているかどうかです。 |
| 3 | IPv4 アドレス / サブネット マスク / デフォルト ゲートウェイ | インタフェースの IP 設定です。 |
| 4 | DNS サーバー | 名前解決に使う DNS サーバです。この検証機は DNS サーバの役割を持つので、自分自身(ループバックの ::1 と 127.0.0.1)を参照しています。 |
Get-NetIPConfiguration
使用できるインタフェースごとに、IP アドレス、デフォルトゲートウェイ、DNS サーバなどのネットワーク構成を表示します。
AD-1(Windows PowerShell)
Get-NetIPConfiguration
1InterfaceAlias : イーサネットInterfaceIndex : 3InterfaceDescription : Microsoft Hyper-V Network AdapterNetProfile.Name : ネットワーク2IPv4Address : (伏せています)IPv6DefaultGateway :IPv4DefaultGateway : (伏せています)3DNSServer : ::1 127.0.0.1
| No. | 表示 | 意味 |
|---|---|---|
| 1 | InterfaceAlias / InterfaceIndex | インタフェースの名前と番号です。他の Net 系コマンドレットでインタフェースを指定するときに使います。 |
| 2 | IPv4Address / IPv4DefaultGateway | IP アドレスとデフォルトゲートウェイです。 |
| 3 | DNSServer | 参照している DNS サーバです。 |
Get-NetIPAddress
インタフェースに設定されている IPv4/IPv6 アドレスを 1 件ずつ表示します。
AD-1(Windows PowerShell)
Get-NetIPAddress
1IPAddress : (伏せています)InterfaceIndex : 3InterfaceAlias : イーサネットAddressFamily : IPv4Type : Unicast2PrefixLength : 243PrefixOrigin : DhcpSuffixOrigin : Dhcp4AddressState : PreferredValidLifetime : Infinite ([TimeSpan]::MaxValue)PreferredLifetime : Infinite ([TimeSpan]::MaxValue)SkipAsSource : FalsePolicyStore : ActiveStore IPAddress : 127.0.0.1InterfaceIndex : 1InterfaceAlias : Loopback Pseudo-Interface 1⋮ (中略)
| No. | 表示 | 意味 |
|---|---|---|
| 1 | IPAddress | アドレスです。IPv6 のリンクローカルアドレスやループバックも 1 件ずつ表示されます。 |
| 2 | PrefixLength | プレフィックス長です。24 はサブネットマスク 255.255.255.0 と同じです。 |
| 3 | PrefixOrigin / SuffixOrigin | アドレスをどこから得たかです。Dhcp は DHCP、Manual は手動設定です。 |
| 4 | AddressState | Preferred は使用中の有効なアドレスです。 |
ルーティングテーブル確認(route print)
インタフェースの一覧と、IPv4/IPv6 のルーティングテーブルを表示します。
AD-1(Windows PowerShell)
route print
===========================================================================インターフェイス一覧 3...(伏せています) ......Microsoft Hyper-V Network Adapter 1...........................Software Loopback Interface 1=========================================================================== IPv4 ルート テーブル===========================================================================アクティブ ルート:ネットワーク宛先 ネットマスク ゲートウェイ インターフェイス メトリック1 0.0.0.0 0.0.0.0 (伏せています) (伏せています) 10 127.0.0.0 255.0.0.0 リンク上 127.0.0.1 331 127.0.0.1 255.255.255.255 リンク上 127.0.0.1 3312 (伏せています) 255.255.255.0 リンク上 (伏せています) 266 224.0.0.0 240.0.0.0 リンク上 127.0.0.1 331⋮ (中略)===========================================================================3固定ルート: なし IPv6 ルート テーブル⋮ (中略)
| No. | 表示 | 意味 |
|---|---|---|
| 1 | 0.0.0.0 / 0.0.0.0 | デフォルトルートです。宛先が他のどのルートにも当てはまらないパケットは、このゲートウェイへ送られます。 |
| 2 | リンク上 | インタフェースが直接つながっているネットワークです。ゲートウェイを通さずに届きます。 |
| 3 | 固定ルート | route -p add で追加した、再起動しても消えないルートです。この検証機にはありません。 |
DNSクライアント設定(Get-DnsClientServerAddress)
インタフェースごとに、参照する DNS サーバのアドレスを表示します。
AD-1(Windows PowerShell)
Get-DnsClientServerAddress
InterfaceAlias Interface Address ServerAddresses Index Family-------------- --------- ------- ---------------1イーサネット 4 IPv4 {(伏せています), 127.0.0.1}イーサネット 4 IPv6 {::1}Loopback Pseudo-Interface 1 1 IPv4 {}Loopback Pseudo-Interface 1 1 IPv6 {fec0:0:0:ffff::1, fec0:0:0:ffff::2, fec0:0:0:ffff::3}
| No. | 表示 | 意味 |
|---|---|---|
| 1 | ServerAddresses | インタフェースとアドレスファミリ(IPv4/IPv6)ごとの DNS サーバです。上から順に問い合わせます。 |
hostsファイル
C:\Windows\System32\drivers\etc\hosts に保存されている hosts ファイルを type で表示します。PowerShell の type は Get-Content の別名です。
AD-1(Windows PowerShell)
type "C:\Windows\System32\drivers\etc\hosts"
# Copyright (c) 1993-2009 Microsoft Corp.## This is a sample HOSTS file used by Microsoft TCP/IP for Windows.⋮ (中略)1# localhost name resolution is handled within DNS itself.# 127.0.0.1 localhost# ::1 localhost
| No. | 表示 | 意味 |
|---|---|---|
| 1 | # で始まる行 | コメントです。この hosts ファイルはすべての行がコメントで、有効なエントリはありません。localhost も DNS クライアントの中で解決されるので、書かなくても動きます。 |
ネットワーク接続確認(Test-NetConnection)
ポート番号やプロトコル名を指定して、相手まで TCP で接続できるかを確認できます。
ポート番号を指定した疎通確認
次の例は、ad-2 の TCP 445 番への接続を確認した結果です。TcpTestSucceeded が True なので、接続できています。
AD-1(Windows PowerShell)
Test-NetConnection ad-2 -port 445
1ComputerName : ad-2RemoteAddress : (伏せています)2RemotePort : 445InterfaceAlias : イーサネットSourceAddress : (伏せています)3TcpTestSucceeded : True
| No. | 表示 | 意味 |
|---|---|---|
| 1 | ComputerName / RemoteAddress | 接続先の名前と、名前解決した結果の IP アドレスです。 |
| 2 | RemotePort | 試したポート番号です。 |
| 3 | TcpTestSucceeded | TCP の接続ができたかどうかです。True なら接続できています。 |
プロトコルを指定した疎通確認
ポート番号の代わりにプロトコル名も指定できます。次の例は、ad-2 に SMB を指定した結果です。SMB は TCP 445 番なので、上と同じ結果になります。
AD-1(Windows PowerShell)
Test-NetConnection ad-2 SMB
ComputerName : ad-2RemoteAddress : (伏せています)1RemotePort : 445InterfaceAlias : イーサネットSourceAddress : (伏せています)2TcpTestSucceeded : True
| No. | 表示 | 意味 |
|---|---|---|
| 1 | RemotePort : 445 | SMB を指定すると 445 番を試します。 |
| 2 | TcpTestSucceeded : True | 接続できています。 |
指定できるプロトコル名は SMB、HTTP、RDP、WINRM(Windows Remote Management)の 4 つです。次の例は HTTP を指定した結果です。TcpTestSucceeded が False なので、TCP 80 番には接続できていません。
AD-1(Windows PowerShell)
Test-NetConnection ad-2 HTTP
1警告: TCP connect to ((伏せています) : 80) failed ComputerName : ad-2RemoteAddress : (伏せています)2RemotePort : 80InterfaceAlias : イーサネットSourceAddress : (伏せています)3PingSucceeded : TruePingReplyDetails (RTT) : 2 ms4TcpTestSucceeded : False
| No. | 表示 | 意味 |
|---|---|---|
| 1 | 警告: TCP connect to (… : 80) failed | TCP 80 番への接続に失敗したという警告です。 |
| 2 | RemotePort : 80 | HTTP を指定したので 80 番を試しています。 |
| 3 | PingSucceeded : True | TCP の接続に失敗したため、ping の結果も表示されています。ping は通っているので、ネットワークとしては ad-2 まで届いています。 |
| 4 | TcpTestSucceeded : False | 80 番で待ち受けているサービスがない(ad-2 は Web サーバではない)か、ファイアウォールで止められています。 |
Webサイト接続確認(Invoke-WebRequest)
特定のサイトに Web で接続できるかを、Invoke-WebRequest で確認できます。応答のステータスコードやヘッダも確認できます。ここでは私のサイトへの接続を確認してみます。
AD-1(Windows PowerShell)
Invoke-WebRequest https://hirotanoblog.com
1StatusCode : 200StatusDescription : OKContent : <!doctype html> <html lang="ja"> <head> <meta charset="utf-8"> ...2RawContent : HTTP/1.1 200 OK Transfer-Encoding: chunked Connection: keep-alive Vary: Accept-Encoding⋮ (中略)
| No. | 表示 | 意味 |
|---|---|---|
| 1 | StatusCode / StatusDescription | HTTP のステータスコードです。200 OK なら正常に応答が返っています。 |
| 2 | RawContent | 応答のステータス行とヘッダです。Content には HTML 本文が入ります。 |
ステータスコード(StatusCode)が 200 OK なので、正常に接続できています。
Active Directory 関連確認
ドメインコントローラー診断(dcdiag)
ドメインコントローラの正常性を確認します。テストが順に実行されるので、各テストが合格しているかを確認します。特定のテストだけを実行したいときは dcdiag /test:テスト名 のように指定します。
AD-1(Windows PowerShell)
dcdiag
ディレクトリ サーバー診断 初期セットアップを実行しています: ホーム サーバーの検索を試みています... ホーム サーバー = AD-1 * AD フォレストが識別されました。 初期情報の収集が完了しました。 必須の初期テストを実行しています 1 サーバーをテストしています: TOKYO\AD-12 テストを開始しています: Connectivity ......................... AD-1 はテスト Connectivity に合格しました プライマリ テストを実行しています サーバーをテストしています: TOKYO\AD-13 テストを開始しています: Advertising ......................... AD-1 はテスト Advertising に合格しました テストを開始しています: FrsEvent⋮ (中略)
| No. | 表示 | 意味 |
|---|---|---|
| 1 | TOKYO\AD-1 | テストしているサーバです。「サイト名\サーバ名」の形で表示されます。 |
| 2 | Connectivity | DC が DNS に登録されていて、LDAP と RPC で接続できるかを確かめるテストです。このテストは省略できません。 |
| 3 | Advertising | DC が自分の役割をクライアントに正しく知らせているか(DC として見つけてもらえるか)を確かめるテストです。Netlogon サービスが止まっていると失敗します。 |
FSMO役割サーバの確認(netdom query fsmo)
Active Directory では、どの DC でも変更を書き込めるのが基本ですが、スキーマの変更のように 1 台だけで処理する必要がある操作があります。その操作を受け持つ役割が FSMO(Flexible Single Master Operation、操作マスター)で、5 つあります。netdom query fsmo は、それぞれの役割をどの DC が持っているかを表示します。
| 役割 | 範囲 | 主な仕事 |
|---|---|---|
| スキーマ マスター | フォレスト | スキーマ(AD に保存できるオブジェクトと属性の定義)の変更を処理します。 |
| ドメイン名前付けマスター | フォレスト | フォレストへのドメインやアプリケーションパーティションの追加・削除を処理します。 |
| PDC エミュレーター | ドメイン | パスワード変更を優先して受け取り、アカウントロックアウトを処理します。フォレストルートドメインの PDC エミュレーターはフォレストの時刻の基準です。 |
| RID マスター | ドメイン | オブジェクトの SID を作るための RID のプールを各 DC に配ります。 |
| インフラストラクチャ マスター | ドメイン | 自ドメインのオブジェクトから他ドメインのオブジェクトへの参照を更新します。 |
AD-1(Windows PowerShell)
netdom query fsmo
1スキーマ マスターAD-1.hirotanoblog.localドメイン名前付けマスターAD-1.hirotanoblog.local2PDCAD-1.hirotanoblog.localRID プール マネージャーAD-1.hirotanoblog.localインフラストラクチャ マスターAD-1.hirotanoblog.localコマンドは正しく完了しました。
| No. | 表示 | 意味 |
|---|---|---|
| 1 | スキーマ マスター / ドメイン名前付けマスター | フォレストに 1 台ずつの役割です。 |
| 2 | PDC / RID プール マネージャー / インフラストラクチャ マスター | ドメインごとに 1 台ずつの役割です。「RID プール マネージャー」は RID マスターのことです。 |
フォレスト全体情報(Get-ADForest)
フォレストの機能レベル、フォレスト単位の FSMO(スキーマ マスターとドメイン名前付けマスター)、グローバルカタログサーバ、サイトなど、フォレスト全体の情報を表示します。
AD-1(Windows PowerShell)
Get-ADForest
ApplicationPartitions : {DC=ForestDnsZones,DC=hirotanoblog,DC=local, DC=DomainDnsZones,DC=hirotanoblog,DC=local}CrossForestReferences : {}1DomainNamingMaster : AD-1.hirotanoblog.localDomains : {hirotanoblog.local}2ForestMode : Windows2016Forest3GlobalCatalogs : {AD-1.hirotanoblog.local, AD-2.hirotanoblog.local, AD-3.hirotanoblog.local}Name : hirotanoblog.localPartitionsContainer : CN=Partitions,CN=Configuration,DC=hirotanoblog,DC=localRootDomain : hirotanoblog.localSchemaMaster : AD-1.hirotanoblog.local4Sites : {Default-First-Site-Name, TOKYO, OSAKA}SPNSuffixes : {}UPNSuffixes : {}
| No. | 表示 | 意味 |
|---|---|---|
| 1 | DomainNamingMaster / SchemaMaster | フォレスト全体の操作マスター(FSMO)の 2 つの役割を持つ DC です。 |
| 2 | ForestMode | フォレストの機能レベルです。Windows2016Forest は Windows Server 2016 の機能レベルです。 |
| 3 | GlobalCatalogs | グローバルカタログサーバの一覧です。FSMO とは別の役割で、この検証では DC 3 台ともグローバルカタログです。 |
| 4 | Sites | フォレストにあるサイトの一覧です。 |
ドメイン全体情報(Get-ADDomain)
ドメインの機能レベル、ドメイン単位の FSMO(インフラストラクチャ マスター、PDC エミュレーター、RID マスター)など、ドメイン全体の情報を表示します。
AD-1(Windows PowerShell)
Get-ADDomain
AllowedDNSSuffixes : {}ChildDomains : {}ComputersContainer : CN=Computers,DC=hirotanoblog,DC=localDistinguishedName : DC=hirotanoblog,DC=localDNSRoot : hirotanoblog.localDomainControllersContainer : OU=Domain Controllers,DC=hirotanoblog,DC=local1DomainMode : Windows2016DomainDomainSID : (伏せています)2InfrastructureMaster : AD-1.hirotanoblog.local⋮ (中略)3NetBIOSName : HIROTANOBLOG⋮ (中略)2PDCEmulator : AD-1.hirotanoblog.local4ReadOnlyReplicaDirectoryServers : {}ReplicaDirectoryServers : {AD-1.hirotanoblog.local, AD-2.hirotanoblog.local, AD-3.hirotanoblog.local}2RIDMaster : AD-1.hirotanoblog.local⋮ (中略)UsersContainer : CN=Users,DC=hirotanoblog,DC=local
| No. | 表示 | 意味 |
|---|---|---|
| 1 | DomainMode | ドメインの機能レベルです。 |
| 2 | InfrastructureMaster / PDCEmulator / RIDMaster | ドメイン単位の FSMO の 3 つの役割を持つ DC です。 |
| 3 | NetBIOSName | ドメインの NetBIOS 名(HIROTANOBLOG\ユーザー名 の形で使う名前)です。 |
| 4 | ReadOnlyReplicaDirectoryServers / ReplicaDirectoryServers | 読み取り専用 DC(RODC)と、書き込み可能な DC の一覧です。この検証では RODC はなく、DC 3 台とも書き込み可能です。 |
ドメインコントローラ情報(Get-ADDomainController)
コマンドを実行したサーバのドメインコントローラ情報を表示します。ドメイン名、IP アドレス、所属しているサイトなどを確認できます。
AD-1(Windows PowerShell)
Get-ADDomainController
ComputerObjectDN : CN=AD-1,OU=Domain Controllers,DC=hirotanoblog,DC=localDefaultPartition : DC=hirotanoblog,DC=localDomain : hirotanoblog.localEnabled : TrueForest : hirotanoblog.local1HostName : AD-1.hirotanoblog.localIPv4Address : (伏せています)IPv6Address :2IsGlobalCatalog : TrueIsReadOnly : False3LdapPort : 389Name : AD-1⋮ (中略)OperatingSystem : Windows Server 2019 DatacenterOperatingSystemVersion : 10.0 (17763)4OperationMasterRoles : {SchemaMaster, DomainNamingMaster, PDCEmulator, RIDMaster...}⋮ (中略)5Site : TOKYOSslPort : 636
| No. | 表示 | 意味 |
|---|---|---|
| 1 | HostName / IPv4Address | DC の FQDN と IP アドレスです。 |
| 2 | IsGlobalCatalog / IsReadOnly | グローバルカタログかどうか、読み取り専用 DC かどうかです。 |
| 3 | LdapPort / SslPort | LDAP(389)と LDAPS(636)のポートです。 |
| 4 | OperationMasterRoles | この DC が持つ FSMO の役割です。表示しきれない分は ... で省略されます。 |
| 5 | Site | DC が所属しているサイトです。 |
ファイル共有確認(net share)
ドメインコントローラでは、SYSVOL と NETLOGON が共有されている必要があります。この 2 つの共有は Netlogon サービスが作ります。どちらかが見当たらないときは、SYSVOL の複製がうまくいっていない可能性があります。
AD-1(Windows PowerShell)
net share
共有名 リソース 注釈 -------------------------------------------------------------------------------C$ C:\ Default shareD$ D:\ Default shareIPC$ Remote IPCADMIN$ C:\Windows Remote Admin1NETLOGON C:\Windows\SYSVOL\sysvol\hirotanoblog.local\SCRIPTS Logon server share2SYSVOL C:\Windows\SYSVOL\sysvol Logon server shareコマンドは正常に終了しました。
| No. | 表示 | 意味 |
|---|---|---|
| 1 | NETLOGON | ログオンスクリプトを置く共有です。実体は SYSVOL の中の SCRIPTS フォルダです。 |
| 2 | SYSVOL | グループポリシーのファイルなどを置く共有で、DC の間で複製されます。 |
C$ / D$ / ADMIN$ / IPC$ | Windows が自動で作る管理用の共有です。 |
複製状況の確認(repadmin /showrepl)
ドメインコントローラ間の複製の状況を確認できます。複製元のドメインコントローラと、最後に複製を試した日時と結果が表示されます。
AD-1(Windows PowerShell)
repadmin /showrepl
Repadmin: フル DC localhost に対してコマンド /showrepl を実行しています1TOKYO\AD-1DSA オプション: IS_GCサイト オプション: (none)DSA オブジェクト GUID: (伏せています)DSA 起動 ID: (伏せています) 2==== 入力方向の近隣サーバー====================================== 3DC=hirotanoblog,DC=local TOKYO\AD-2 (RPC 経由) DSA オブジェクト GUID: (伏せています)4 2022-03-12 22:59:58 の最後の試行は成功しました。 CN=Configuration,DC=hirotanoblog,DC=local TOKYO\AD-2 (RPC 経由) 2022-03-12 22:59:58 の最後の試行は成功しました。⋮ (中略)DC=DomainDnsZones,DC=hirotanoblog,DC=local TOKYO\AD-2 (RPC 経由) 2022-03-12 22:59:58 の最後の試行は成功しました。
| No. | 表示 | 意味 |
|---|---|---|
| 1 | TOKYO\AD-1 / IS_GC | コマンドを実行した DC(サイト\DC 名)です。IS_GC はグローバルカタログであることを示します。 |
| 2 | 入力方向の近隣サーバー | この DC が複製を受け取る相手(複製元)の一覧です。 |
| 3 | DC=hirotanoblog,DC=local と TOKYO\AD-2 | パーティション(名前付けコンテキスト)ごとに、どの DC から複製しているかが並びます。この検証では、ドメイン・構成・スキーマ・DNS の各パーティションを AD-2 から受け取っています。 |
| 4 | 最後の試行は成功しました | 直近の複製の結果と日時です。失敗しているとエラー番号と連続失敗回数が表示されます。 |
複製状況の確認(repadmin /replsummary)
フォレスト内のドメインコントローラ間の複製の状況を、DC ごとにまとめて表示します。複製の失敗回数などを一覧で確認できます。
AD-1(Windows PowerShell)
repadmin /replsummary
レプリケーションの要約開始時刻: 2022-03-13 00:01:02 レプリケーションの要約のためのデータ収集を開始します。これにはしばらく時間がかかる場合があります: ...... 1ソース DSA 最大デルタ 失敗/合計 %% エラー AD-1 (unknown) 0 / 10 0 AD-2 01m:03s 0 / 5 0 AD-3 (unknown) 0 / 3 0 2宛先 DSA 最大デルタ 失敗/合計 %% エラー AD-1 01m:03s 0 / 5 0 AD-2 03m:52s 0 / 8 0 AD-3 (unknown) 0 / 5 0
| No. | 表示 | 意味 |
|---|---|---|
| 1 | ソース DSA | 複製元として見た DC ごとの集計です。 |
| 2 | 宛先 DSA | 複製先として見た DC ごとの集計です。 |
失敗/合計 / エラー | 複製リンクのうち失敗している数と全体の数、エラー番号です。この検証ではすべて 0 で、失敗はありません。 |
オブジェクト検索(dsquery)
dsquery は、Active Directory のオブジェクトを種類ごとに検索して、識別名(DN)の一覧を表示します。
コンピュータ情報の検索(dsquery computer)
Active Directory 内のコンピュータアカウントを検索します。この検証では、Domain Controllers OU にある DC 3 台が表示されています。
AD-1(Windows PowerShell)
dsquery computer
"CN=AD-1,OU=Domain Controllers,DC=hirotanoblog,DC=local""CN=AD-2,OU=Domain Controllers,DC=hirotanoblog,DC=local""CN=AD-3,OU=Domain Controllers,DC=hirotanoblog,DC=local"
OUの検索(dsquery ou)
Active Directory 内の組織単位(OU)を検索します。既定の Domain Controllers OU のほかに、作成した OU が表示されています。
AD-1(Windows PowerShell)
dsquery ou
"OU=Domain Controllers,DC=hirotanoblog,DC=local""OU=TestOU1,DC=hirotanoblog,DC=local""OU=Sales,DC=hirotanoblog,DC=local""OU=Engineer,DC=hirotanoblog,DC=local"
グループの検索(dsquery group)
Active Directory 内のグループを検索します。CN=Builtin にあるのは、ドメインを作ったときに自動で作られる組み込みのグループです。
AD-1(Windows PowerShell)
dsquery group
"CN=Administrators,CN=Builtin,DC=hirotanoblog,DC=local""CN=Users,CN=Builtin,DC=hirotanoblog,DC=local""CN=Guests,CN=Builtin,DC=hirotanoblog,DC=local""CN=Print Operators,CN=Builtin,DC=hirotanoblog,DC=local""CN=Backup Operators,CN=Builtin,DC=hirotanoblog,DC=local""CN=Replicator,CN=Builtin,DC=hirotanoblog,DC=local""CN=Remote Desktop Users,CN=Builtin,DC=hirotanoblog,DC=local"⋮ (中略)
ユーザの検索(dsquery user)
Active Directory 内のユーザを検索します。既定のアカウントは CN=Users コンテナに、作成したユーザは配置した OU にあることがわかります。
AD-1(Windows PowerShell)
dsquery user
"CN=(伏せています),CN=Users,DC=hirotanoblog,DC=local""CN=Guest,CN=Users,DC=hirotanoblog,DC=local""CN=krbtgt,CN=Users,DC=hirotanoblog,DC=local""CN=(伏せています),OU=Engineer,DC=hirotanoblog,DC=local""CN=(伏せています),OU=Sales,DC=hirotanoblog,DC=local""CN=(伏せています),OU=TestOU1,DC=hirotanoblog,DC=local"
サイトの検索(dsquery site)
Active Directory 内のサイトを検索します。既定の Default-First-Site-Name のほかに、TOKYO と OSAKA の 2 つのサイトがあります。
AD-1(Windows PowerShell)
dsquery site
"CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=hirotanoblog,DC=local""CN=TOKYO,CN=Sites,CN=Configuration,DC=hirotanoblog,DC=local""CN=OSAKA,CN=Sites,CN=Configuration,DC=hirotanoblog,DC=local"
サブネットの検索(dsquery subnet)
Active Directory 内のサブネットを検索します。サブネットはサイトに関連付けて、クライアントがどのサイトにいるかを判断するために使われます。
AD-1(Windows PowerShell)
dsquery subnet
"CN=(伏せています)/24,CN=Subnets,CN=Sites,CN=Configuration,DC=hirotanoblog,DC=local""CN=(伏せています)/24,CN=Subnets,CN=Sites,CN=Configuration,DC=hirotanoblog,DC=local"
| コマンド | 見るポイント |
|---|---|
dsquery computer | どの OU にどのコンピュータがあるか |
dsquery ou | OU の構成 |
dsquery group | グループの一覧と置き場所 |
dsquery user | 作成したユーザがどの OU にあるか |
dsquery site / dsquery subnet | サイトとサブネットの登録状況 |
DNSサーバ情報(Get-DnsServer)
DNS サーバの設定をまとめて表示します。出力は長く、サーバの設定のあとにゾーンの情報なども続きます。
AD-1(Windows PowerShell)
Get-DnsServer
警告: EnableRegistryBoot は DNS サーバー AD-1 バージョンには適用されません。 ServerSetting:============== EnableOnlineSigning TrueTcpReceivePacketSize 65536WriteAuthorityNs FalseSocketPoolSize 2500⋮ (中略)EnableIPv6 TrueRpcProtocol 51ForestDirectoryPartitionBaseName ForestDnsZonesAutoCreateDelegation 2EnableDirectoryPartitions TrueSelfTest 42949672952DsAvailable True⋮ (中略)DomainDirectoryPartitionBaseName DomainDnsZones⋮ (中略)
| No. | 表示 | 意味 |
|---|---|---|
| 1 | ForestDnsZones / DomainDnsZones | AD 統合ゾーンを保存するアプリケーションパーティションの名前です。Get-ADForest の ApplicationPartitions と同じものです。 |
| 2 | DsAvailable | DNS サーバが Active Directory を使える状態かどうかです。 |
DNSリソースレコード一覧(Get-DnsServerResourceRecord)
DNS ゾーンに登録されているレコードの一覧を表示します。次の例では、hirotanoblog.local ゾーンのレコードを取得しています。
AD-1(Windows PowerShell)
Get-DnsServerResourceRecord -ZoneName hirotanoblog.local
HostName RecordType Timestamp TimeToLive RecordData-------- ---------- --------- ---------- ----------1@ A 2022/03/12 22:00:00 00:10:00 (伏せています)@ A 2022/03/12 22:00:00 00:10:00 (伏せています)@ A 2022/03/12 21:00:00 00:10:00 (伏せています)2@ NS 0 01:00:00 ad-1.hirotanoblog.local.@ NS 0 01:00:00 ad-2.hirotanoblog.local.@ SOA 0 01:00:00 [90][ad-1.hirotanoblog.local.][hostmaste... _msdcs NS 0 01:00:00 ad-1.hirotanoblog.local.3_gc._tcp.Default-First... SRV 2022/03/12 22:00:00 00:10:00 [0][100][3268][ad-1.hirotanoblog.local.]_kerberos._tcp.Default... SRV 2022/03/12 22:00:00 00:10:00 [0][100][88][ad-1.hirotanoblog.local.]_ldap._tcp.Default-Fir... SRV 2022/03/12 22:00:00 00:10:00 [0][100][389][ad-1.hirotanoblog.local.]⋮ (中略)
| No. | 表示 | 意味 |
|---|---|---|
| 1 | @ / A | @ はゾーンそのもの(hirotanoblog.local)を表します。DC の IP アドレスが A レコードで登録されています。 |
| 2 | Timestamp が 0 | 手動で作った静的なレコードです。日時が入っているものは動的に登録されたレコードで、最後に更新された日時が入ります。 |
| 3 | SRV の RecordData | [優先度][重み][ポート][ホスト] の順です。3268 はグローバルカタログ、88 は Kerberos、389 は LDAP で、クライアントはこの SRV レコードで DC を探します。 |
時刻同期(w32tm /query)
Kerberos 認証は時刻のずれに弱いので、ドメインコントローラでは時刻同期の状態も確認します。
設定確認
AD-1(Windows PowerShell)
w32tm /query /configuration
[構成] EventLogFlags: 2 (ローカル)AnnounceFlags: 10 (ローカル)TimeJumpAuditOffset: 28800 (ローカル)1MinPollInterval: 6 (ローカル)MaxPollInterval: 10 (ローカル)2MaxNegPhaseCorrection: 172800 (ローカル)MaxPosPhaseCorrection: 172800 (ローカル)MaxAllowedPhaseOffset: 300 (ローカル) FrequencyCorrectRate: 4 (ローカル)PollAdjustFactor: 5 (ローカル)LargePhaseOffset: 50000000 (ローカル)SpikeWatchPeriod: 900 (ローカル)LocalClockDispersion: 10 (ローカル)HoldPeriod: 5 (ローカル)PhaseCorrectRate: 7 (ローカル)UpdateInterval: 100 (ローカル)
| No. | 表示 | 意味 |
|---|---|---|
| 1 | MinPollInterval / MaxPollInterval | 時刻を問い合わせる間隔の最小と最大です。値は 2 のべき乗の秒数で、6 は 64 秒、10 は 1,024 秒です。 |
| 2 | MaxNegPhaseCorrection / MaxPosPhaseCorrection | 1 回に補正する時刻のずれの上限(秒)です。172800 秒は 48 時間です。 |
動作確認
AD-1(Windows PowerShell)
w32tm /query /status
閏インジケーター: 0 (警告なし)1階層: 4 (二次参照 - (S)NTP で同期)精度: -23 (ティックごとに 119.209ns)ルート遅延: 0.0000879sルート分散: 0.0100002s参照 ID: (伏せています) (ソース IP: (伏せています))2最終正常同期時刻: 2022/03/13 0:20:023ソース: VM IC Time Synchronization Provider4ポーリング間隔: 6 (64s)
| No. | 表示 | 意味 |
|---|---|---|
| 1 | 階層 | NTP のストラタムです。時刻の基準から何段目かを表します。 |
| 2 | 最終正常同期時刻 | 最後に時刻を同期できた日時です。古いままなら同期できていません。 |
| 3 | ソース | 時刻をもらっている相手です。VM IC Time Synchronization Provider は、仮想マシンのホストから時刻を受け取っていることを示します。 |
| 4 | ポーリング間隔 | いまの問い合わせ間隔です。MinPollInterval の 6(64 秒)で動いています。 |
ドメインでは、メンバーは DC から時刻を受け取り、DC の時刻の受け取り先をたどると、フォレストルートドメインの PDC エミュレーターに行き着きます。この PDC エミュレーターがフォレスト全体の時刻の基準です。そのため、本番の環境では PDC エミュレーターがどこから時刻を取るか(外部の NTP サーバか、仮想化基盤のホストか)を設計で決めておきます。
GPOバックアップ
サーバー マネージャーの ツール ›› グループ ポリシーの管理 を開き、フォレスト ›› ドメイン ›› hirotanoblog.local ›› グループ ポリシー オブジェクト を右クリックして、すべてバックアップ を選びます。
保存先を指定して、バックアップをクリックします。
| 1場所(L) | C:\Users\(伏せています)\Desktop\gpo 参照(B)… |
| 説明(D) |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | 場所 | バックアップを保存するフォルダです。同じフォルダに複数の GPO のバックアップを保存できます。 |
| 2 | バックアップ | 押すと、ドメインのすべての GPO がバックアップされます。 |
- WMI フィルターや IPsec ポリシーなど、GPO の外にある設定はバックアップされません。
- バックアップには GPO の中身が含まれるので、保存先のフォルダは管理者だけが書き込めるようにしておきます。
- PowerShell では
Backup-GPOで同じことができます。保存先のフォルダは先に作っておきます。
AD-1(Windows PowerShell)
Backup-GPO -All -Path "C:\GPOBackup"
まとめ
調査で確認したいことと、使うコマンドの対応を表にまとめます。
| コマンド | 確認できること |
|---|---|
| systeminfo | OS、メモリ、ドメイン、更新プログラム |
| Get-WindowsFeature | インストール済みの役割と機能 |
| Get-Service | サービスの稼働状況 |
| Get-Volume | ディスクの空き容量と正常性 |
| Get-EventLog / Get-WinEvent | イベントログ |
| Get-LocalUser / Get-LocalGroup | ユーザとグループ |
| ipconfig /all / Get-NetIPConfiguration | IP アドレス、ゲートウェイ、DNS サーバ |
| route print | ルーティングテーブル |
| Test-NetConnection | ポート単位の疎通 |
| Invoke-WebRequest | Web の応答(ステータスコード) |
| dcdiag | ドメインコントローラの正常性 |
| netdom query fsmo | FSMO の役割を持つ DC |
| Get-ADForest / Get-ADDomain | フォレストとドメインの情報、機能レベル |
| net share | SYSVOL と NETLOGON の共有 |
| repadmin /showrepl / /replsummary | DC 間の複製の状況 |
| dsquery | AD のオブジェクトの一覧 |
| Get-DnsServerResourceRecord | DNS レコード(DC の SRV レコードなど) |
| w32tm /query /status | 時刻同期の状態 |
コメント