Adam the Automator

Active Directoryデータベースは、ADの最も重要な部分です。 結局のところ、データベースがなければ、AD はまったく役に立ちません。 Active Directory データベースはどこにあるのでしょうか? ntds.ditはどこにあるのでしょうか? また、どのようにデータベースを監視するのでしょうか? このチュートリアルでは、これらの質問に対する答えを学びます!

ADのすべての側面を監視することは重要で、データベースそのものが最も重要です。 このため、データベースがどのようなもので構成されているか、また、健全な状態を保つためにどのように監視するのが最善かを調査することは、十分に価値があります。

この記事では、ドメイン内のすべてのDC上の各ADデータベースを照会して、データベースに関する重要な測定値(全体データベース サイズ)を判断できるPowerShellスクリプトを構築します。

目次

Ntds.dit (The Active Directory Database)

ADデータベースはntds.ditというファイルからなり、ntds.ditは通常すべてのドメインコントローラーの C:\WindowsNTDS にあります。

正しいパスを取得するには、まずデータベースパスを特定する必要があります。 この値は、レジストリキーHKLM:³³に格納されています。

Finding the AD Database with PowerShell

環境内のすべてのDCにデータベースファイルのパスを照会してみましょう。 これを行うには、foreach ループを使用し、ドメイン コントローラー名とそれぞれのデータベース ファイルへのパスを含む、上で作成した $dbs 変数を繰り返し処理します。

ADデータベースのサイズの監視

出力をより簡単に理解するために、$output ハッシュ テーブルを使用して、各データベース ファイルを読み込んでドメイン コントローラー名やそれぞれのデータベースのサイズなどの値を割り当てます。 そして、データベースファイルの読み込みが完了したら、これをカスタムオブジェクトに変換します。 これは、単純に PSComputerName、DSA Database File、size といった出力よりもきれいに表示されます。

$dbs | foreach { $output = @{} $path = $_.'DSA Database File' $output.Add('DomainController', $_.PSComputerName) $size = Invoke-Command -ComputerName $_.PSComputerName -ScriptBlock { (Get-ItemProperty -Path $using:path).Length /1GB } $output.Add('DatabaseSizeDB', $size) $output}

このスニペットでは、DatabaseSizeDBDomainController というプロパティがきれいに出力されるでしょう。 私のデモ環境では、DCは1つしかありません。

これで、いつでも実行できるスクリプトができ、各 Active Directory データベース ファイルがどの程度大きくなったかのポイント イン タイム スナップショットを取得できます。