Adam der Automator

Die Active Directory Datenbank ist bei weitem der wichtigste Teil von AD. Schließlich wäre AD ohne die Datenbank gar nicht so gut. Wo ist die Active Directory-Datenbank? Wo befindet sich die ntds.dit? Und wie können Sie die Datenbank überwachen? Die Antwort auf diese Fragen erfahren Sie in diesem Tutorial!

Es ist wichtig, alle Aspekte von AD zu überwachen, und die Datenbank selbst ist von größter Bedeutung. Deshalb lohnt es sich, zu untersuchen, woraus die Datenbank besteht und wie man sie am besten überwacht, um sicherzustellen, dass sie gesund bleibt.

In diesem Artikel werden wir ein PowerShell-Skript erstellen, mit dem Sie jede AD-Datenbank auf jedem DC in Ihrer Domäne abfragen und eine wichtige Metrik über die Datenbank ermitteln können: die Gesamtgröße der Datenbank.

Inhaltsverzeichnis

Ntds.dit (Die Active Directory-Datenbank)

Eine AD-Datenbank besteht aus einer Datei namens ntds.dit, und der Speicherort der ntds.dit befindet sich in der Regel in C:\Windows\NTDS jedes Domänencontrollers.

Um sicherzustellen, dass wir den richtigen Pfad erhalten, müssen wir zunächst herausfinden, wo der Datenbankpfad liegt. Dieser Wert ist im Registrierungsschlüssel HKLM:\System\CurrentControlSet\Services\NTDS\Parameters gespeichert.

Finden der AD-Datenbank mit PowerShell

Lassen Sie uns alle DCs in unserer Umgebung nach dem Pfad der Datenbankdatei abfragen.

$dcs = (Get-ADDomainController).Name$dbs = Invoke-Command -ComputerName $dcs -ScriptBlock { Get-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\NTDS\Parameters} | Select PSComputerName,'DSA Database File'

Nun, da ich den Pfad zur Active Directory-Datenbank auf jedem DC kenne, kann ich nun jede der aktuellen Größen abfragen. Dazu verwende ich eine foreach-Schleife und iteriere durch die Variable $dbs, die ich oben erstellt habe und die den Namen des Domänencontrollers und den Pfad zur Datenbankdatei auf jedem DC enthält.

Überwachen der Größe der AD-Datenbank

Um die Ausgabe besser zu verstehen, verwende ich eine $output-Hashtabelle und weise ihr Werte zu, während ich jede Datenbankdatei lese, wie den Namen des Domänencontrollers und die Größe jeder Datenbank. Wenn ich mit dem Lesen der Datenbankdatei fertig bin, konvertiere ich sie in ein benutzerdefiniertes Objekt. Dies ergibt eine schönere Ausgabe als nur PSComputerName, DSA Database File und die Größe.

$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}

Dieses Snippet ergibt eine schöne Ausgabe von DatabaseSizeDB und eine DomainController Eigenschaft. In meiner Demo-Umgebung habe ich nur einen einzigen DC. Wenn Sie dieses Skript in der Produktionsumgebung ausführen würden, würden Sie jeden Ihrer Domänencontroller
zusammen mit der Gesamtgröße der Datenbank in GB neben jedem einzelnen sehen.

Jetzt haben Sie ein Skript, das Sie jederzeit ausführen können, um eine Momentaufnahme zu erhalten, wie groß jede Ihrer Active Directory-Datenbankdateien geworden ist!