Verwalten von OUs und Verschieben ihrer Objekte mit PowerShell
Jun 26, 2018
Eine Organisationseinheit (OU) ist ein Container in Active Directory, in dem Benutzer, Gruppen und Computer sowie weitere OUs gespeichert werden können. Jede AD-Domäne kann ihre eigene Hierarchie von Organisationseinheiten haben.
In diesem Artikel erfahren Sie mehr über OU-Management und wie Sie PowerShell-Skripte verwenden, um Organisationseinheiten in AD zu erstellen, zu verschieben und zu löschen; eine Group Policy mit einer OU zu verknüpfen; und Computer- und Benutzerkonten in eine andere OU zu verschieben.
PowerShell ISE ist das beste Werkzeug für die Arbeit mit PowerShell-Skripten. Starten Sie das PowerShell ISE-Tool mit Administratorrechten, indem Sie „Windows+R“ drücken und „runas /profile /user:Administrator PowerShell_ISE“ im Ausführen-Fenster eingeben. Geben Sie das Administratorpasswort ein, wenn Sie dazu aufgefordert werden. Alternativ können Sie mit der rechten Maustaste auf das PowerShell ISE-Symbol klicken und die Option „Als Administrator ausführen“ wählen.
Um mit AD und seinen Objekten zu arbeiten, müssen Sie das Active Directory-Modul für Windows PowerShell importieren. In Microsoft Windows Server 2008 R2 müssen Sie dieses Modul aktivieren, indem Sie den folgenden Befehl ausführen:
Import-Module ActiveDirectory
In Microsoft Windows Server 2012 und später ist dieses Modul standardmäßig aktiviert.
Erstellen Sie OUs in einer Active Directory-Domäne mit PowerShell
Sie können eine neue Organisationseinheit in Active Directory erstellen, indem Sie das Cmdlet New-ADOrganizationalUnit verwenden und den Namen eines neuen OU-Objekts angeben. Standardmäßig wird PowerShell die OU im Domain-Root erstellen. Der folgende Befehl erstellt eine OU mit dem Namen „Regions“ auf dem DC:
New-ADOrganizationalUnit “Regions”
Wenn Sie einen anderen OU LDAP-Pfad benötigen, geben Sie dessen Distinguished Name mit dem Parameter –Path des Cmdlets an:
New-ADOrganizationalUnit “Regions” –Path “OU=Managers,DC=Enterprise,DC=com”
Verschieben Sie eine OU zu einer anderen LDAP-Adresse
Wenn Sie eine OU an einen anderen Ort verschieben müssen, verwenden Sie das Cmdlet Move-ADObject. Beachten Sie, dass die Ziel-OU nicht gegen versehentliches Löschen geschützt sein darf. Wenn dies der Fall ist, verwenden Sie diesen Befehl, um diesen Schutz zu entfernen:
Set-ADOrganizationalUnit -Identity "OU=Regions,OU=Managers,DC=Enterprise,DC=Com" -ProtectedFromAccidentalDeletion $False
Jetzt können Sie die OU an einen anderen Ort verschieben:
Move-ADObject -Identity "OU=Regions,OU=Managers,DC=Enterprise,DC=Com" -TargetPath "OU=IT,DC=Enterprise,DC=Com"
Eine OU umbenennen
Um eine Organisationseinheit umzubenennen, verwenden Sie das Cmdlet Rename-ADObject. Der Parameter -Identity gibt das umzubenennende Active Directory-Objekt an und erfordert entweder dessen Distinguished Name (DN) oder GUID.
Dieser Befehl benennt die „Regions“-OU in „Districts“ um:
Rename-ADObject -Identity "OU=Regions,OU=IT,DC=enterprise,DC=COM" -NewName Districts
Alternativ können Sie das Cmdlet Get-ADOrganizationalUnit mit dem Parameter the -Filter verwenden; es erfordert nicht den gesamten LDAP-Pfad zur OU. Allerdings wird dieses Cmdlet die gesamte AD durchsuchen und die Aktion wird auf alle OUs angewendet, die den Suchbegriff in ihren Namen enthalten:
Get-ADOrganizationalUnit -Filter "Name -eq 'Regions'" | Rename-ADObject -NewName Countries
Wenden Sie eine Gruppenrichtlinie auf eine OU an
Um einer OU eine Gruppenrichtlinie zuzuweisen, verwenden Sie das Cmdlet New-GPLink , das im Grunde eine Verknüpfung zwischen dem angegebenen Gruppenrichtlinienobjekt (GPO) und der OU herstellt. Sie können eine der folgenden Eigenschaften für die Verknüpfung angeben:
- Aktiviert — Wenn der Link aktiviert ist, werden die Einstellungen der GPO angewendet, wenn die Gruppenrichtlinie für die Website, Domäne oder OU verarbeitet wird.
- Durchgesetzt — Wenn die Verknüpfung durchgesetzt wird, kann sie in einem untergeordneten Container nicht blockiert werden.
- Reihenfolge — Die Reihenfolge gibt die Priorität der GPO-Einstellungen an.
Der folgende Befehl verknüpft die „Block Software“ GPO mit der „Districts“ OU, wobei die Verknüpfung sowohl aktiviert als auch erzwungen wird:
New-GPLink -Name "Block Software" -Target "OU=Districts,OU=IT,dc=enterprise,dc=com" -LinkEnabled Yes -Enforced Yes
Verschieben Sie Computer und Benutzer in eine neue OU
Sobald Sie eine OU erstellt und optional mit einer GPO verknüpft haben, ist es an der Zeit, sie mit Benutzern und Computern zu füllen. Das PowerShell-Move-ADObject-Cmdlet verschiebt ein Objekt oder eine Gruppe von Objekten (wie einen Benutzer, einen Computer, eine Gruppe oder eine andere OU) in eine andere OU. Der Parameter -Identity gibt an, welches Active Directory-Objekt oder welchen Container man verschieben möchte. Beachten Sie, dass Sie den vollständigen LDAP-Pfad oder die SID des Objekts eingeben müssen; Sie können nicht seinen SamAccountName verwenden. Das folgende Beispiel demonstriert, wie man einen Benutzer (John Brown) in die OU „Districts“ verschiebt:
Move-ADObject -Identity "CN=John Brown,CN=Users,DC=enterprise,DC=com" -TargetPath "OU=Districts,OU=IT,DC=Enterprise,DC=Com"
Verwenden Sie dieselbe Syntax, um Computerobjekte zu verschieben. Der folgende Befehl wird den Computer „R07GF“ in den „Computers“-Container verschieben:
Move-ADObject -Identity "CN=R07GF,OU=CEO,DC=enterprise,DC=com" -TargetPath "CN=Computers,DC=Enterprise,DC=Com
Verschieben Sie AD-Computer und Benutzer mit einer CSV- oder TXT-Datei in eine andere OU
Wenn Sie eine vordefinierte Liste von Objekten haben, die verschoben werden sollen, können Sie diese als CSV-Datei speichern und dann diese Datei in Active Directory importieren. Die CSV-Liste sollte im folgenden Format sein:
Verwenden Sie dieses PowerShell-Skript, um AD-Benutzerkonten, die in einer CSV-Datei aufgelistet sind, zu verschieben:
# Specify target OU. This is where users will be moved.
$TargetOU = "OU=Districts,OU=IT,DC=enterprise,DC=com"
# Specify CSV path. Import CSV file and assign it to a variable.
$Imported_csv = Import-Csv -Path "C:tempMoveList.csv"
$Imported_csv | ForEach-Object {
# Retrieve DN of user.
$UserDN = (Get-ADUser -Identity $_.Name).distinguishedName
# Move user to target OU.
Move-ADObject -Identity $UserDN -TargetPath $TargetOU
}
Um AD-Computerkonten, die in einer Textdatei aufgelistet sind, zu verschieben, verwenden Sie das folgende PowerShell-Skript:
# Specify path to the text file with the computer account names.
$computers = Get-Content C:TempComputers.txt
# Specify the path to the OU where computers will be moved.
$TargetOU = "OU=Districts,OU=IT,DC=enterprise,DC=com"
ForEach( $computer in $computers){
Get-ADComputer $computer |
Move-ADObject -TargetPath $TargetOU
}
Entfernen Sie eine OU aus AD
Das Cmdlet Remove-ADOrganizationalUnit entfernt eine OU. Die OU darf nicht gegen versehentliches Löschen geschützt sein. Sie können die Option zum Schutz vor versehentlichem Löschen für jede OU entfernen, die „Continents“ in ihrem Namen enthält, indem Sie die Cmdlets Get-ADOrganizationalUnit und Set-ADOrganizationalUnit wie folgt verwenden:
Get-ADOrganizationalUnit -filter "Name -eq 'Continents'" | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $False
Verwenden Sie den folgenden Befehl, um jede OU, die „Continents“ in ihrem Namen enthält, aus AD zu entfernen:
Get-ADOrganizationalUnit -filter "Name -eq 'Continents'" | Remove-ADOrganizationalUnit –Recursive
Sie werden aufgefordert, das Löschen zu bestätigen:
Beachten Sie, dass der -Recursive-Parameter sowohl die OU als auch alle ihre untergeordneten Objekte entfernt. Die untergeordneten Objekte werden gelöscht, auch wenn für sie ein Löschschutz aktiviert ist.
Fazit
Jetzt, da Sie gelernt haben, wie man OUs in Active Directory mit PowerShell-Skripten verwaltet, können Sie eine Vielzahl einfacher Operationen im Zusammenhang mit der OU-Verwaltung automatisieren. Bevor Sie diese Befehle ausprobieren, stellen Sie sicher, dass Sie das Feature Active Directory Recycle Bin aktivieren, damit Sie versehentliche Löschungen problemlos rückgängig machen können. Es ist auch klug, alle Änderungen an Ihren Organisationseinheiten sorgfältig zu verfolgen.
Sorgfältig ausgewählte verwandte Inhalte
- So finden Sie deaktivierte oder inaktive Benutzer und Computer in AD mit PowerShell
- Wie man Änderungen an Organisationseinheiten und Gruppen in Active Directory erkennt
- So erhalten Sie einen Bericht über die Berechtigungen einer Active Directory-OU
- Wie man eine Liste aller Benutzer aus einer bestimmten OU erhält
- Wie man alle Computer in einer OU auflistet
- Wie man erkennt, wer die Berechtigungen für eine OU geändert hat
Teilen auf
Erfahren Sie mehr
Über den Autor
Jeff Melnick
Direktor für Systemtechnik
Jeff ist ehemaliger Director of Global Solutions Engineering bei Netwrix. Er ist ein langjähriger Netwrix-Blogger, Redner und Präsentator. Im Netwrix-Blog teilt Jeff Lifehacks, Tipps und Tricks, die Ihre Systemadministrationserfahrung erheblich verbessern können.
Erfahren Sie mehr zu diesem Thema
Datenschutzgesetze der Bundesstaaten: Unterschiedliche Ansätze zum Datenschutz
Beispiel für Risikoanalyse: Wie man Risiken bewertet
Das CIA-Dreieck und seine Anwendung in der realen Welt
Was ist elektronisches Records Management?
Quantitative Risikoanalyse: Jährliche Verlust Erwartung