Zaawansowane zarządzanie replikacją i topologią usługi Active Directory przy użyciu środowiska Windows PowerShell (poziom 200)

 

Dotyczy: Windows Server 2012

W systemie Windows Server 2012 rozszerzono moduł usługi Active Directory dla środowiska Windows PowerShell o dwadzieścia pięć nowych poleceń cmdlet do zarządzania replikacją i topologią lasu. Wcześniej użytkownicy musieli używać ogólnych rzeczowników *-AdObject lub wywoływać funkcje środowiska .NET.

Podobnie jak wszystkie polecenia cmdlet środowiska Windows PowerShell dla usługi Active Directory, ta nowa funkcja wymaga instalacji usługi bramy zarządzania usługą Active Directory na co najmniej jednym kontrolerze domeny (a najlepiej na wszystkich kontrolerach domeny).

W poniższej tabeli wymieniono nowe polecenia cmdlet dotyczące replikacji i topologii dodane do modułu środowiska Windows PowerShell dla usługi Active Directory.

Polecenia cmdlet

Objaśnienie

Get-ADReplicationAttributeMetadata

Zwraca metadane replikacji atrybutu dla obiektu

Get-ADReplicationConnection

Zwraca szczegóły obiektu połączenia kontrolera domeny

Get-ADReplicationFailure

Zwraca ostatnią awarię replikacji dla kontrolera domeny

Get-ADReplicationPartnerMetadata

Zwraca konfigurację replikacji kontrolera domeny

Get-ADReplicationQueueOperation

Zwraca bieżące zaległości kolejki replikacji

Get-ADReplicationSite

Zwraca informacje o lokacji

Get-ADReplicationSiteLink

Zwraca informacje o linku lokacji

Get-ADReplicationSiteLinkBridge

Zwraca informacje o mostku linków lokacji

Get-ADReplicationSubnet

Zwraca informacje o podsieci usługi Active Directory

Get-ADReplicationUpToDatenessVectorTable

Zwraca wektor UTD dla kontrolera domeny

Get-ADTrust

Zwraca informacje dotyczące zaufania między domenami lub między lasami

New-ADReplicationSite

Tworzy nową lokację

New-ADReplicationSiteLink

Tworzy nowy link lokacji

New-ADReplicationSiteLinkBridge

Tworzy nowy mostek linków lokacji

New-ADReplicationSubnet

Tworzy nową podsieć usługi Active Directory

Remove-ADReplicationSite

Usuwa lokację

Remove-ADReplicationSiteLink

Usuwa link lokacji

Remove-ADReplicationSiteLinkBridge

Usuwa mostek linków lokacji

Remove-ADReplicationSubnet

Usuwa podsieć usługi Active Directory

Set-ADReplicationConnection

Modyfikuje połączenia

Set-ADReplicationSite

Modyfikuje lokację

Set-ADReplicationSiteLink

Modyfikuje link lokacji

Set-ADReplicationSiteLinkBridge

Modyfikuje mostek linków lokacji

Set-ADReplicationSubnet

Modyfikuje podsieć usługi Active Directory

Sync-ADObject

Wymusza replikację pojedynczego obiektu

Większość tych poleceń cmdlet wywodzi się z programu Repadmin.exe. Inne polecenia cmdlet (niewymienione) obsługują takie funkcje, jak dynamiczna kontrola dostępu i konta usług zarządzane przez grupę.

Aby uzyskać pełną listę wszystkich poleceń cmdlet środowiska Windows PowerShell dla usługi Active Directory, należy uruchomić następujące polecenie:

Get-command -module ActiveDirectory

Pełną listę wszystkich argumentów poleceń cmdlet środowiska Windows PowerShell dla usługi Active Directory można znaleźć w pomocy: Przykład:

Get-help New-ADReplicationSite

Do pobrania i zainstalowania plików pomocy należy użyć polecenia cmdlet Update-Help

Program Repadmin.exe sprawdza kondycję i spójność replikacji usługi Active Directory. Program Repadmin.exe udostępnia opcje prostej manipulacji danymi — niektóre argumenty obsługują na przykład dane wyjściowe CSV — ale automatyzacja wymaga zazwyczaj analizy danych wyjściowych w pliku tekstowym. Moduł usługi Active Directory dla środowiska Windows PowerShell to pierwsza próba zaoferowania opcji zapewniającej rzeczywistą kontrolę nad zwracanymi danymi; wcześniej trzeba było tworzyć skrypty lub używać narzędzi innych firm.

Ponadto następujące polecenia cmdlet implementują nowy zestaw parametrów Target, Scope i EnumerationServer:

  • Get-ADReplicationFailure

  • Get-ADReplicationPartnerMetadata

  • Get-ADReplicationUpToDatenessVectorTable

Argument Target akceptuje listy ciągów rozdzielanych przecinkami, które identyfikują serwery docelowe, lokacje, domeny lub lasy określone przez argument Scope. Dopuszczalne jest również użycie gwiazdki (*), która oznacza wszystkie serwery w podanym zakresie. Jeśli żaden zakres nie zostanie określony, będzie to oznaczać wszystkie serwery w lesie bieżącego użytkownika. Argument Scope określa zakres wyszukiwania. Dopuszczalne wartości to Server, Site, Domain i Forest. Argument EnumerationServer określa serwer, który wylicza listę kontrolerów domeny określonych w argumentach Target i Scope. Działa on tak samo jak argument Server i wymaga, aby na określonym serwerze działała usługa sieci Web usługi Active Directory.

Jako wprowadzenie do nowych poleceń cmdlet poniżej przedstawiono kilka przykładowych scenariuszy prezentujących możliwości niedostępne w programie repadmin.exe; dzięki tym ilustracjom możliwości administracyjne stają się oczywiste. Konkretne wymagania dotyczące użycia poszczególnych poleceń cmdlet należy znaleźć w pomocy.

To polecenie cmdlet jest podobne do polecenia repadmin.exe /showobjmeta. Umożliwia ono zwrócenie metadanych replikacji, takich jak czas zmiany atrybutu, inicjujący kontroler domeny, wersja i informacje o numerze USN oraz dane atrybutu. To polecenie cmdlet jest przydatne do inspekcji miejsca i czasu wystąpienia zmiany.

W przeciwieństwie do programu Repadmin, środowisko Windows PowerShell udostępnia elastyczną kontrolę nad wyszukiwaniem i danymi wyjściowymi. Można w nim na przykład zapisać metadane obiektu Administratorzy domeny uporządkowane jako czytelna lista:

Get-ADReplicationAttributeMetadata -object "cn=domain admins,cn=users,dc=corp,dc=contoso,dc=com" -server dc1.corp.contoso.com -showalllinkedvalues | format-list

GetADRepl

Alternatywnie można rozmieścić dane w tabeli, aby wyglądały jak wynik z programu repadmin:

Get-ADReplicationAttributeMetadata -object "cn=domain admins,cn=users,dc=corp,dc=contoso,dc=com" -server dc1.corp.contoso.com -showalllinkedvalues | format-table -wrap

GetADReplAttrMdTable

Kolejna możliwość to pobranie metadanych dla całej klasy obiektów przez potokowe przetworzenie polecenia cmdlet Get-Adobject z filtrem, na przykład wybierającym wszystkie grupy, a następnie połączenie wyniku z konkretną datą. Potok to kanał używany między wieloma poleceniami cmdlet do przekazywania danych. Aby wyświetlić wszystkie grupy zmodyfikowane w dowolny sposób 13 stycznia 2012 r.:

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
GetADRepl

Więcej informacji o operacjach w środowisku Windows PowerShell z użyciem potoków zawiera temat Potokowanie i potok w środowisku Windows PowerShell.

Aby znaleźć każdą grupę, do której należy Tony Wang, oraz datę ostatniej modyfikacji każdej z takich grup:

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

GetADRepl

Aby znaleźć wszystkie obiekty autorytatywnie przywrócone z kopii zapasowej stanu systemu w domenie, na podstawie ich sztucznie wysokiej wersji:

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
ADDS_PSGetADReplAttrMdFilter2

Wysłanie wszystkich metadanych użytkownika do pliku CSV w celu późniejszego zbadania w programie Microsoft Excel:

get-adobject -filter 'objectclass -eq "user"' | Get-ADReplicationAttributeMetadata -server dc1.corp.contoso.com -showalllinkedvalues | export-csv allgroupmetadata.csv

To polecenie cmdlet zwraca informacje o konfiguracji i stanie replikacji dla kontrolera domeny, co umożliwia monitorowanie, inwentaryzowanie i rozwiązywanie problemów. W przeciwieństwie do programu Repadmin.exe, użycie środowiska Windows PowerShell oznacza, że zostaną wyświetlone tylko istotne dane w żądanym formacie.

Na przykład czytelny stan replikacji jednego kontrolera domeny:

Get-ADReplicationPartnerMetadata -target dc1.corp.contoso.com
GetADReplAttrMdTable

Albo czas ostatniej replikacji danych przychodzących przez kontroler domeny i jego partnerzy, w formacie tabeli:

Get-ADReplicationPartnerMetadata -target dc1.corp.contoso.com | format-table lastreplicationattempt,lastreplicationresult,partner -auto
GetADReplAttrMdTable

Można również skontaktować się z wszystkimi kontrolerami domeny w lesie i wyświetlić te z nich, dla których ostatnia próba replikacji nie powiodła się z dowolnej przyczyny:

Get-ADReplicationPartnerMetadata -target * -scope server | where {$_.lastreplicationresult -ne "0"} | ft server,lastreplicationattempt,lastreplicationresult,partner -auto

ADDS_PSGetADReplPartnerMdFail

Tego polecenia cmdlet można użyć w celu zwrócenia informacji o ostatnich błędach w replikacji. Jest ono odpowiednikiem polecenia Repadmin.exe /showreplsum, ale dzięki środowisku Windows PowerShell oferuje znacznie większą kontrolę.

Na przykład można zwrócić informacje o ostatnich awariach kontrolera domeny i o partnerach, z którymi kontakt nie powiódł się:

Get-ADReplicationFailure dc1.corp.contoso.com
GetADReplAttrMdTable

Można również zwrócić widok tabeli dla wszystkich serwerów w określonej lokacji logicznej usługi Active Directory, uporządkowany w celu łatwiejszego przeglądania i zawierający tylko najważniejsze dane:

Get-ADReplicationFailure -scope site -target default-first-site-name | format-table server,firstfailuretime,failurecount,lasterror,partner -auto

GetADReplAttrMdTable

Oba te polecenia cmdlet zwracają dodatkowe aspekty aktualności kontrolera domeny, obejmujące replikację oczekującą oraz informacje o wektorze wersji.

To polecenie cmdlet jest analogiczne do polecenia Repadmin.exe /replsingleobject. Jest ono bardzo przydatne podczas wprowadzania zmian, które wymagają replikacji poza pasmem, szczególnie w celu rozwiązania problemu.

Na przykład jeśli ktoś usunie konto użytkownika Dyrektora generalnego, a następnie przywróci je z kosza usługi Active Directory, prawdopodobnie wskazana będzie jego natychmiastowa replikacja do wszystkich kontrolerów domen. Ponadto pożądane będzie zrobienie tego bez wymuszania replikacji wszystkich innych wprowadzonych zmian obiektów — w końcu po to jest harmonogram replikacji, aby nie przeciążać łączy sieci WAN.

Get-ADDomainController -filter * | foreach {Sync-ADObject -object "cn=tony wang,cn=users,dc=corp,dc=contoso,dc=com" -source dc1 -destination $_.hostname}

ADDS_PSSyncAD

Chociaż program Repadmin.exe dobrze sobie radzi ze zwracaniem informacji o topologii replikacji, takich jak lokacje, linki lokacji, mostki linków lokacji i połączenia, nie ma kompletnego zestawu argumentów w celu wprowadzenia zmian. W rzeczywistości w systemie Windows nigdy nie było wbudowanego, przeznaczonego dla administratorów skryptowego narzędzia do tworzenia i modyfikowania topologii usług AD DS. W miarę dojrzewania usługi Active Directory w milionach środowisk klienckich, potrzeba masowego modyfikowania informacji logicznych w usłudze Active Directory stała się oczywista.

Na przykład po gwałtownej ekspansji nowych oddziałów firmy w połączeniu z konsolidacją innych może zdarzyć się, że należy wprowadzić sto zmian na podstawie położenia fizycznego, zmian sieci i nowych wymagań w zakresie wydajności. Zamiast wprowadzać zmiany przy użyciu przystawek Dssites.msc i Adsiedit.msc, można użyć przetwarzania automatycznego. Jest to szczególnie atrakcyjne w przypadku zaczynania pracy nad arkuszem kalkulacyjnym z danymi dostarczonymi przez zespoły sieciowe i tradycyjne.

Polecenia cmdlet Get-Adreplication zwracają informacje o topologii replikacji i są użyteczne do masowego potokowania w polecenia cmdlet Set-Adreplication*. Polecenia cmdlet Get nie zmieniają danych, a jedynie je wyświetlają lub tworzą obiekty sesji środowiska Windows PowerShell, które można potokować do poleceń cmdlet Set-Adreplication*. Polecenia cmdlet New i Remove są przydatne do tworzenia lub usuwania obiektów topologii usługi Active Directory.

Na przykład można tworzyć nowe lokacje przy użyciu pliku CSV:

import-csv -path C:\newsites.csv | new-adreplicationsite
NewADReplSite
GetADReplAttrMdTable

Można również utworzyć nowy link lokacji między dwiema istniejącymi lokacjami z niestandardowym okresem replikacji i kosztem lokacji:

new-adreplicationsitelink -name "chicago<-->waukegan" -sitesincluded chicago,waukegan -cost 50 -replicationfrequencyinminutes 15
Nowa lokacja usługi Active Directory

Alternatywnie można znaleźć każdą lokację w lesie i zastąpić jej atrybuty Options flagami, aby umożliwić powiadamianie o zmianach między lokacjami w celu maksymalizacji szybkości replikacji dzięki kompresji danych:

get-adreplicationsitelink -filter * | set-adobject –replace @{options=$($_.options –bor 1)}
NewADReplSite
System_CAPS_importantWażne

Ustawienie parametru -bor 5 wyłączy kompresję dla tych linków lokacji.

Można również znaleźć wszystkie witryny bez przypisania podsieci w celu uzgodnienia listy z rzeczywistymi podsieciami tych lokacji:

get-adreplicationsite -filter * -property subnets | where-object {!$_.subnets -eq "*"} | format-table name
NewADReplSite
Pokaż: