Adam the Automator

Báze dat Active Directory je zdaleka nejdůležitější součástí služby AD. Koneckonců bez databáze by služba AD nebyla vůbec k ničemu. Kde se nachází databáze služby Active Directory? Kde se nachází soubor ntds.dit? A jak můžete databázi sledovat? Odpověď na tyto otázky se dozvíte v tomto tutoriálu!

Je důležité sledovat všechny aspekty služby AD a samotná databáze je nesmírně důležitá. Proto se vyplatí prozkoumat, z čeho se databáze skládá a jak ji nejlépe monitorovat, aby zůstala zdravá.

V tomto článku vytvoříme skript PowerShell, který vám umožní zobrazit dotaz na každou databázi AD v každém DC v doméně a určit jednu důležitou metriku o databázi; celkovou velikost databáze.

Obsah

Ntds.dit (Databáze Active Directory)

Databáze AD se skládá ze souboru ntds.dit a umístění ntds.dit je obvykle v C:\Windows\NTDS každého řadiče domény.

Abychom zajistili správnou cestu, musíme nejprve zjistit, kde je cesta k databázi. Tato hodnota je uložena v klíči registru HKLM:\System\CurrentControlSet\Services\NTDS\Parameters.

Zjištění databáze AD pomocí prostředí PowerShell

Poptáme se všech DC v našem prostředí na cestu k databázovému souboru.

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

Teď, když znám cestu k databázi Active Directory na každém DC, mohu se nyní zeptat každého z nich na aktuální velikost. K tomu použiji cyklus foreach a budu iterovat přes proměnnou $dbs, kterou jsem vytvořil výše a která obsahuje název řadiče domény a cestu k databázovému souboru na každém z nich.

Sledování velikosti databáze AD

Pro snadnější pochopení výstupu použiji hashtable $output, přiřadím do ní hodnoty při čtení jednotlivých databázových souborů, jako je název řadiče domény a velikost každé databáze. Po dokončení čtení databázového souboru jej převedu na vlastní objekt. Tím se zobrazí hezčí výstup než pouhý PSComputerName, DSA Database File a velikost.

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

Tento úryvek vám poskytne hezký výstup DatabaseSizeDB a vlastnost DomainController. V mém ukázkovém prostředí mám pouze jeden DC. Kdybyste to spustili v produkčním prostředí, viděli byste každý z řadičů domény
spolu s celkovou velikostí databáze v GB u každého z nich.

Teď máte skript, který můžete kdykoli spustit, abyste získali okamžitý přehled o tom, jak velké jsou jednotlivé soubory databáze služby Active Directory!