Condividi tramite


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).

  1. Introduzione

  2. Replica e metadati

  3. Get-ADReplicationAttributeMetadata

  4. Get-ADReplicationPartnerMetadata

  5. Get-ADReplicationFailure

  6. Get-ADReplicationQueueOperation and Get-ADReplicationUpToDatenessVectorTable

  7. Sync-ADObject

  8. Topologia

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

Screenshot che mostra l'output dei metadati dell'oggetto Domain Admins ordinato come elenco leggibile.

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

Screenshot che mostra i dati disposti in modo che siano simili a repadmin in una tabella.

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

Screenshot che mostra come visualizzare tutti i gruppi modificati in qualche modo il 13 gennaio 2012.

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

Screenshot che mostra come scoprire ogni gruppo che ha Tony Wang come membro e quando il gruppo è stato modificato per l'ultima volta.

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

Screenshot che mostra come trovare tutti gli oggetti ripristinati in modo autorevole usando un backup dello stato del sistema nel dominio, in base alla versione artificialmente elevata.

È 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

Screenshot che mostra come ottenere lo stato di replica leggibile di un singolo controller di dominio.

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

Screenshot che mostra l'ultima volta che un controller di dominio ha replicato in ingresso e i relativi partner, in un formato di tabella.

È 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

Screenshot che mostra come contattare tutti i controller di dominio nella foresta e visualizzare tutti i cui ultimi tentativi di replica non sono riusciti per qualsiasi motivo.

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

Screenshot che mostra come restituire gli errori più recenti di un controller di dominio e i partner che ha avuto esito negativo.

È 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

Screenshot che mostra come restituire una visualizzazione tabella per tutti i server in un sito logico di ACTIVE Directory specifico, ordinato per una visualizzazione più semplice e contenente solo i dati più critici.

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}

Screenshot che mostra come replicare un account eliminato dal Cestino di Active Directory in tutti i controller di dominio senza forzare la replica di tutte le altre modifiche apportate all'oggetto.

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

Screenshot che mostra l'interfaccia del Blocco note.

Screenshot che mostra come creare nuovi siti usando un file CSV.

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

Screenshot che mostra la creazione di un nuovo collegamento di sito tra due siti esistenti con un intervallo di replica personalizzato e un costo del sito.

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

gestione avanzata con PowerShell

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

Screenshot che mostra come trovare tutte le assegnazioni di subnet mancanti in tutti i siti per riconciliare l'elenco con le subnet effettive di tali posizioni.

Vedi anche

Introduzione alla gestione della topologia e della replica di Active Directory mediante Windows PowerShell (livello 100)