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!