Advanced Active Directory Replication and Topology Management Using Windows PowerShell (Level 200)
In questo argomento vengono illustrati in dettaglio i cmdlet di gestione della replica e della topologia di Active Directory Domain Services e vengono forniti esempi aggiuntivi. Per un'introduzione, vedere Introduction to Active Directory Replication and Topology Management Using Windows PowerShell (Level 100).
Introduzione
Nella tabella seguente sono elencati i cmdlet di replica e topologia aggiunti al modulo Windows PowerShell di Active Directory:
Cmdlet | Spiegazione |
---|---|
Get-ADReplicationAttributeMetadata | Restituisce i metadati di replica dell'attributo per un oggetto |
Get-ADReplicationConnection | Restituisce i dettagli relativi all'oggetto connessione del controller di dominio |
Get-ADReplicationFailure | Restituisce l'errore di replica più recente per un controller di dominio |
Get-ADReplicationPartnerMetadata | Restituisce la configurazione di replica di un controller di dominio |
Get-ADReplicationQueueOperation | Restituisce il backlog della coda della replica corrente |
Get-ADReplicationSite | Restituisce le informazioni sul sito |
Get-ADReplicationSiteLink | Restituisce le informazioni relative al collegamento di sito |
Get-ADReplicationSiteLinkBridge | Restituisce le informazioni relative al ponte di collegamenti di sito |
Get-ADReplicationSubnet | Restituisce le informazioni relative alla subnet di Active Directory |
Get-ADReplicationUpToDatenessVectorTable | Restituisce il vettore di aggiornamento per un controller di dominio |
Get-ADTrust | Restituisce informazioni relative al trust tra domini o tra foreste |
New-ADReplicationSite | Crea un nuovo sito |
New-ADReplicationSiteLink | Crea un nuovo collegamento di sito |
New-ADReplicationSiteLinkBridge | Crea un nuovo ponte di collegamenti di sito |
New-ADReplicationSubnet | Crea una nuova subnet di Active Directory |
Remove-ADReplicationSite | Elimina un sito |
Remove-ADReplicationSiteLink | Elimina un collegamento di sito |
Remove-ADReplicationSiteLinkBridge | Elimina un ponte di collegamenti di sito |
Remove-ADReplicationSubnet | Elimina una subnet di Active Directory |
Set-ADReplicationConnection | Modifica una connessione |
Set-ADReplicationSite | Modifica un sito |
Set-ADReplicationSiteLink | Modifica un collegamento di sito |
Set-ADReplicationSiteLinkBridge | Modifica un ponte di collegamenti di sito |
Set-ADReplicationSubnet | Modifica una subnet di Active Directory |
Sync-ADObject | Forza la replica di un oggetto singolo |
La maggior parte di questi cmdlet si basa su Repadmin.exe. Altri cmdlet (non riportati nell'elenco) gestiscono funzionalità quali il controllo dinamico degli accessi e gli account del servizio di gruppo gestiti.
Per un elenco completo di tutti i cmdlet di Windows PowerShell per Active Directory, eseguire:
Get-Command -module ActiveDirectory
Per un elenco completo di tutti gli argomenti dei cmdlet di Windows PowerShell per Active Directory, fare riferimento alla guida. Ad esempio:
Get-Help New-ADReplicationSite
Usare il cmdlet Update-Help
per scaricare e installare i file della guida
Replica e metadati
Repadmin.exe convalida l'integrità e la coerenza della replica di Active Directory. Repadmin.exe offre opzioni di modifica dei dati semplificate, ad esempio alcuni argomenti supportano gli output in formato CSV, ma l'automazione richiede in genere l'analisi tramite output di file di testo. Il modulo Active Directory per Windows PowerShell è il primo tentativo di offerta di un'opzione che consente un controllo reale sui dati restituiti. In precedenza, era necessario creare script o usare strumenti di terze parti.
Inoltre, i cmdlet seguenti implementano un nuovo set di parametri di Target, Scope e EnumerationServer:
Get-ADReplicationFailure
Get-ADReplicationPartnerMetadata
Get-ADReplicationUpToDatenessVectorTable
L'argomento Target accetta un elenco separato da virgole di stringhe che identificano i server, i siti, i domini o le foreste di destinazione specificati dall'argomento Scope. È consentito anche un asterisco (*) che indica tutti i server inclusi nell'ambito specificato. Se non è specificato un ambito, indica tutti i server nella foresta dell'utente corrente. L'argomento Scope specifica la latitudine della ricerca. I valori accettabili sono Server, Site, Domain e Forest. EnumerationServerspecifica il server che enumera l'elenco di controller di dominio specificati inTargeteScope. Funziona come l'argomento Server e richiede che nel server specificato sia in esecuzione Servizi Web Active Directory.
Per illustrare i cmdlet, di seguito vengono forniti alcuni scenari di esempio che mostrano le funzionalità impossibili da eseguire con repadmin.exe. Grazie a queste illustrazioni, le possibilità amministrative diventano ovvie. Per informazioni sui requisiti di utilizzo specifici, consultare la guida relativa ai cmdlet.
Get-ADReplicationAttributeMetadata
Questo cmdlet è simile a repadmin.exe /showobjmeta. Consente di restituire i metadati della replica, ad esempio la data di modifica di un attributo, il controller di dominio di origine, le informazioni sulla versione e sul numero di sequenza di aggiornamento (USN) e i dati dell'attributo. Questo cmdlet è utile per controllare dove e quando si è verificata una modifica.
Diversamente da Repadmin, Windows PowerShell offre opzioni di ricerca e output flessibili. Ad esempio, è possibile eseguire l'output dei metadati dell'oggetto Domain Admins, ordinato come un elenco leggibile:
Get-ADReplicationAttributeMetadata -object "cn=domain admins,cn=users,dc=corp,dc=contoso,dc=com" -server dc1.corp.contoso.com -showalllinkedvalues | format-list
In alternativa, è possibile disporre i dati in una tabella come in repadmin:
Get-ADReplicationAttributeMetadata -object "cn=domain admins,cn=users,dc=corp,dc=contoso,dc=com" -server dc1.corp.contoso.com -showalllinkedvalues | format-table -wrap
Oppure, è possibile ottenere i metadati per un'intera classe di oggetti, canalizzando il cmdlet Get-Adobject con un filtro, ad esempio "tutti i gruppi" e quindi combinando i risultati con una data specifica. La pipeline è un canale usato tra più cmdlet per passare i dati. Per visualizzare tutti i gruppi modificati il giorno 13 gennaio 2012:
Get-ADObject -filter 'objectclass -eq "group"' | Get-ADReplicationAttributeMetadata -server dc1.corp.contoso.com | where-object {$_.lastoriginatingchangetime -like "*1/13/2012*" -and $_.attributename -eq "name"} | format-table object
Per altre informazioni su ulteriori operazioni di Windows PowerShell con le pipeline, vedere Piping e pipeline in Windows PowerShell.
In alternativa, per trovare ogni gruppo in cui è incluso il membro Tony Wang e la data dell'ultima modifica del gruppo:
Get-ADObject -filter 'objectclass -eq "group"' | Get-ADReplicationAttributeMetadata -server dc1.corp.contoso.com -showalllinkedvalues | where-object {$_.attributevalue -like "*tony wang*"} | format-table object,LastOriginatingChangeTime,version -auto
Per trovare tutti gli oggetti ripristinati in modo autorevole tramite un backup dello stato del sistema nel dominio, in base alla relativa versione artificialmente elevata:
Get-ADObject -filter 'objectclass -like "*"' | Get-ADReplicationAttributeMetadata -server dc1.corp.contoso.com | where-object {$_.version -gt "100000" -and $_.attributename -eq "name"} | format-table object,LastOriginatingChangeTime
È anche possibile inviare tutti i metadati utente a un file CSV per l'analisi successiva in Microsoft Excel:
Get-ADObject -filter 'objectclass -eq "user"' | Get-ADReplicationAttributeMetadata -server dc1.corp.contoso.com -showalllinkedvalues | export-csv allgroupmetadata.csv
Get-ADReplicationPartnerMetadata
Questo cmdlet restituisce informazioni sulla configurazione e lo stato della replica per un controller di dominio per il monitoraggio, l'inventario o la risoluzione dei problemi. Diversamente da Repadmin.exe, quando si usa Windows PowerShell vengono visualizzati solo i dati ritenuti importanti, nel formato desiderato.
Ad esempio, per ottenere lo stato della replica leggibile di un singolo controller di dominio:
Get-ADReplicationPartnerMetadata -target dc1.corp.contoso.com
Oppure, l'ultima volta in cui un controller di dominio ha replicato i dati in ingresso e i relativi partner, in formato tabella.
Get-ADReplicationPartnerMetadata -target dc1.corp.contoso.com | format-table lastreplicationattempt,lastreplicationresult,partner -auto
È anche possibile contattare tutti i controller di dominio nella foresta e visualizzare gli ultimi tentativi di replica non riusciti, per qualsiasi motivo:
Get-ADReplicationPartnerMetadata -target * -scope server | where {$_.lastreplicationresult -ne "0"} | ft server,lastreplicationattempt,lastreplicationresult,partner -auto
Get-ADReplicationFailure
Questo cmdlet può essere usato per restituire informazioni sugli errori recenti nella replica. Corrisponde a Repadmin.exe /showreplsum ma, grazie a Windows PowerShell, offre ancora maggiore controllo.
È ad esempio possibile restituire gli errori più recenti di un controller di dominio e i partner che non è riuscito a contattare:
Get-ADReplicationFailure dc1.corp.contoso.com
È anche possibile restituire una visualizzazione tabella per tutti i server in un sito logico di Active Directory specifico, ordinata in modo da agevolare la visualizzazione e contenente solo i dati più critici:
Get-ADReplicationFailure -scope site -target default-first-site-name | format-table server,firstfailuretime,failurecount,lasterror,partner -auto
Get-ADReplicationQueueOperation and Get-ADReplicationUpToDatenessVectorTable
Entrambi questi cmdlet restituiscono ulteriori aspetti sul controller di dominio e sul suo stato di aggiornamento, tra cui le informazioni sul vettore di versione e sulla replica in attesa.
Sync-ADObject
Questo cmdlet corrisponde all'esecuzione di Repadmin.exe /replsingleobject. Risulta utile quando si apportano modifiche che richiedono la replica fuori banda, in particolare per correggere un problema.
Se ad esempio l'account utente del CEO è stato eliminato e quindi ripristinato dal Cestino di Active Directory, si vorrà replicarlo immediatamente in tutti i controller di dominio. È inoltre opportuno che questa operazione venga eseguita senza forzare la replica di tutte le altre modifiche di oggetti per non sovraccaricare i collegamenti WAN, motivo per cui esiste una pianificazione di replica.
Get-ADDomainController -filter * | foreach {Sync-ADObject -object "cn=tony wang,cn=users,dc=corp,dc=contoso,dc=com" -source dc1 -destination $_.hostname}
Topologia
Mentre Repadmin.exe funziona bene per restituire le informazioni relative alla topologia di replica, quali siti, collegamenti di siti, ponti di collegamenti di siti e connessioni, non offre un set completo di argomenti per apportare modifiche. Infatti, non è mai stata disponibile un'utilità di Windows inclusa gestibile tramite script dedicata agli amministratori per la creazione e la modifica della topologia di Servizi di dominio Active Directory. Poiché Active Directory si è sviluppato in milioni di ambienti cliente, l'esigenza di modificare in blocco le informazioni logiche di Active Directory diventa evidente.
Ad esempio, dopo l'espansione rapida di nuove succursali, in combinazione con il consolidamento delle altre, potrebbe essere necessario implementare centinaia di modifiche del sito in base alla sede fisica, alle modifiche alla rete e ai nuovi requisiti in termini di capacità. Invece di usare Dssites.msc e Adsiedit.msc per apportare le modifiche, è possibile automatizzare le operazioni. Questo è particolarmente utile quando si inizia con un foglio di calcolo di dati fornito dai team della rete e delle strutture.
I cmdlet Get-Adreplication* restituiscono informazioni sulla topologia di replica e sono utili per il pipelining nei cmdlet Set-Adreplication* in blocco. I cmdlet Get non modificano i dati ma li mostrano soltanto o creano oggetti della sessione di Windows PowerShell che possono essere inviati tramite pipeline ai cmdlet Set-Adreplication*. I cmdlet New e Remove sono utili per creare o rimuovere oggetti della topologia di Active Directory.
È ad esempio possibile creare nuovi siti tramite un file CSV:
Import-Csv -path C:\newsites.csv | new-adreplicationsite
In alternativa, è possibile creare un nuovo collegamento di sito tra due siti esistenti con un intervallo di replica e un costo del sito personalizzati:
New-ADReplicationSiteLink -name "chicago<-->waukegan" -sitesincluded chicago,waukegan -cost 50 -replicationfrequencyinminutes 15
Oppure, è possibile trovare ogni sito nella foresta e sostituire i relativi attributi Options con il flag per abilitare la notifica delle modifiche tra siti per replicare alla velocità massima con compressione:
Get-ADReplicationSiteLink -filter * | set-adobject -replace @{options=$($_.options -bor 1)}
Importante
Impostare -bor 5 per disabilitare la compressione anche su tali collegamenti di sito.
È anche possibile trovare tutti i siti a cui non sono assegnate subnet, per riconciliare l'elenco con le subnet effettive di tali percorsi:
Get-ADReplicationSite -filter * -property subnets | where-object {!$_.subnets -eq "*"} | format-table name