Active Directory - PowerShell

Come vedere i ruoli FSMO di Active Directory con PowerShell

Active Directory è un servizio multi-master: la maggior parte delle modifiche può essere replicata partendo da un qualsiasi Domain Controller. Esistono però alcune operazioni che, per evitare conflitti, devono avere un unico proprietario alla volta: sono i cinque ruoli FSMO (Flexible Single Master Operations). Sapere quale Domain Controller detiene ciascun ruolo è fondamentale prima di uno spegnimento pianificato, una migrazione o un trasferimento di ruolo, oltre che in fase di troubleshooting quando qualcosa smette di funzionare (autenticazioni, blocco account, creazione di nuovi oggetti).

Schema Master

Lo Schema Master è l’unico Domain Controller della foresta autorizzato a modificare lo schema di Active Directory, cioè la definizione delle classi di oggetti e degli attributi disponibili (ad esempio durante l’installazione di Exchange o di altri prodotti che estendono lo schema). Se questo DC non è raggiungibile, le normali operazioni di dominio proseguono senza problemi: l’unico effetto è che non è possibile eseguire estensioni di schema fino al ripristino o al trasferimento del ruolo.

Domain Naming Master

Il Domain Naming Master è l’unico DC che può aggiungere o rimuovere domini e partizioni di directory dalla foresta, oltre a gestire le relazioni di trust esterne a livello di foresta. Come per lo Schema Master, la sua indisponibilità non impatta l’attività quotidiana: blocca solo le operazioni di aggiunta/rimozione domini, un’attività comunque rara.

PDC Emulator

Il PDC Emulator è probabilmente il ruolo più “sentito” dagli utenti: gestisce la sincronizzazione oraria dell’intero dominio, elabora con priorità i blocchi account e le modifiche password ed è il riferimento per la compatibilità con i vecchi controller NT4 e con alcune applicazioni legacy. Se il PDC Emulator è offline, gli effetti sono visibili quasi subito: possono comparire disallineamenti dell’orario tra i client (con conseguenti problemi Kerberos) e ritardi nella propagazione dei cambi password appena effettuati.

RID Master

Il RID Master distribuisce ai vari DC del dominio i pool di RID (Relative ID) usati per generare i SID di nuovi oggetti come utenti, gruppi e computer. Ogni DC riceve un blocco di RID e lo consuma localmente; se il RID Master non è raggiungibile a lungo, i DC continuano a creare nuovi oggetti finché hanno RID disponibili nel proprio pool, ma prima o poi esauriscono la scorta e la creazione di nuovi oggetti si blocca.

Infrastructure Master

L’Infrastructure Master mantiene aggiornati i riferimenti (SID e Distinguished Name) tra oggetti di domini diversi della stessa foresta, ad esempio quando un utente di un altro dominio viene aggiunto a un gruppo locale. Se questo ruolo non è disponibile, i riferimenti cross-dominio possono restare non aggiornati e mostrare informazioni obsolete (come nomi non risolti) fino al ripristino del ruolo. In ambienti con un solo dominio, o dove ogni DC è anche Global Catalog, questo ruolo non ha praticamente effetto visibile.

Metodo 1: PowerShell

I ruoli di dominio (PDC Emulator, RID Master, Infrastructure Master) si ottengono da Get-ADDomain

Get-ADDomain | Select-Object -Property PDCEmulator, InfrastructureMaster, RIDMaster

# Output di esempio
PDCEmulator              InfrastructureMaster     RIDMaster
-----------              --------------------     ---------
DC01.dominio.local       DC01.dominio.local       DC01.dominio.local

I ruoli di foresta (Schema Master, Domain Naming Master) si ottengono invece da Get-ADForest, perché non sono proprietà del dominio ma della foresta

Get-ADForest | Select-Object -Property SchemaMaster, DomainNamingMaster

# Output di esempio
SchemaMaster             DomainNamingMaster
------------             ------------------
DC01.dominio.local       DC01.dominio.local

Entrambi i comandi richiedono il modulo ActiveDirectory di RSAT caricato nella sessione.

Metodo 2: Prompt dei comandi (netdom)

Quando non si ha a disposizione il modulo PowerShell di Active Directory è possibile usare il comando netdom, disponibile nativamente su Windows Server e installabile separatamente su client tramite RSAT

netdom query fsmo

# Output di esempio
Schema master               DC01.dominio.local
Domain naming master        DC01.dominio.local
PDC                         DC01.dominio.local
RID pool manager            DC01.dominio.local
Infrastructure master       DC01.dominio.local
The command completed successfully.

A differenza dei due cmdlet PowerShell, questo singolo comando restituisce tutti e cinque i ruoli in un’unica volta, senza bisogno di interrogare sia il dominio sia la foresta separatamente.

Nota: In una foresta con un solo dominio e un solo Domain Controller, come negli esempi sopra, è normale che tutti e cinque i ruoli risiedano sulla stessa macchina. In infrastrutture più grandi, con più domini o più DC per motivi di ridondanza, i ruoli sono spesso distribuiti su server diversi: per questo è buona norma verificarne la collocazione prima di interventi di manutenzione, così da sapere in anticipo se lo spegnimento di un DC comporta anche l’indisponibilità temporanea di un ruolo FSMO.