Adam the Automator

Baza de date Active Directory este, de departe, cea mai importantă piesă a AD. La urma urmei, fără baza de date, AD nu ar fi bun de nimic. Unde se află baza de date Active Directory? Unde se află locația ntds.dit? Și cum puteți monitoriza baza de date? Veți afla răspunsul la aceste întrebări în acest tutorial!

Este important să monitorizați toate aspectele AD, iar baza de date în sine este de cea mai mare importanță. Acesta este motivul pentru care merită să investighezi în ce constă baza de date și cum să o monitorizezi cel mai bine pentru a te asigura că rămâne sănătoasă.

În acest articol, vom construi un script PowerShell care îți va permite să vezi o interogare a fiecărei baze de date AD pe fiecare DC din domeniul tău și să determini o metrică importantă despre baza de date; dimensiunea generală a bazei de date.

Tabloul cuprinsului

Ntds.dit (Baza de date Active Directory)

O bază de date AD este formată dintr-un fișier numit ntds.dit, iar locația ntds.dit este de obicei în C:\Windows\NTDS al fiecărui controler de domeniu.

Pentru a ne asigura că obținem calea corectă, va trebui mai întâi să ne dăm seama unde este calea bazei de date. Această valoare este stocată în cheia de registru HKLM:\System\CurrentControlSet\Services\NTDS\Parameters.

Găsirea bazei de date AD cu PowerShell

Să interogăm toate DC-urile din mediul nostru pentru calea fișierului bazei de date.

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

Acum că știu calea către baza de date Active Directory de pe fiecare DC, pot acum să interoghez fiecare dintre dimensiunile curente. Pentru a face acest lucru, voi folosi o buclă foreach și voi itera prin variabila $dbs pe care am creat-o mai sus și care conține numele controlerului de domeniu și calea către fișierul bazei de date de pe fiecare.

Monitorizarea dimensiunii bazei de date AD

Pentru a înțelege mai ușor rezultatul, voi folosi un hashtable $output, îi voi atribui valori pe măsură ce citesc fiecare fișier de bază de date, cum ar fi numele controlerului de domeniu și dimensiunea fiecărei baze de date. Apoi voi converti acest lucru într-un obiect personalizat atunci când voi termina de citit fișierul de bază de date. Acest lucru va afișa un rezultat mai frumos decât pur și simplu PSComputerName, DSA Database File și mărimea.

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

Acest fragment vă va oferi un rezultat frumos de DatabaseSizeDB și o proprietate DomainController. În mediul meu demonstrativ, am doar un singur DC. Dacă ați rula acest lucru în producție, ați vedea fiecare dintre controlorii dvs. de domeniu
împreună cu dimensiunea totală a bazei de date în GB în dreptul fiecăruia.

Acum aveți un script pe care îl puteți rula în orice moment pentru a obține o imagine instantanee punctuală a cât de mare a crescut fiecare dintre fișierele bazei de date Active Directory!

.