Erstellen Sie Active Directory OU-Berichte mit PowerShell. Eine Organisationseinheit (OU) ist ein Active Directory (AD)-Container, in dem Benutzer, Gruppen, Computer und andere OUs gespeichert werden können. Jede AD-Domäne kann ihre eigene hierarchische Organisationseinheitsstruktur haben. Dieser Artikel behandelt das OU–Management und wie man Windows PowerShell-Skripte verwendet, um OU-Berichte in AD zu erstellen, zu verschieben, zu erstellen, zu löschen und zu generieren und eine Gruppenrichtlinie an eine OU zu verknüpfen und durchzusetzen.
Erstellen Sie Active Directory OU-Berichte mit PowerShell
Voraussetzungen Wenn wir die folgenden Beispiel-Skripte in diesem Artikel verwenden möchten, müssen wir die erforderlichen Komponenten installieren:
Wenn wir uns den folgenden Beispielskripten in diesem Artikel anschließen möchten, müssen wir die vorausgesetzten Komponenten installieren:
-
Domänenfunktionalitätsstufe
–
Windows
Server 2016. -
Remote Server Administration Tools (RSAT) für Active Directory
installiert auf Ihrem domänenangebundenen Arbeitsplatz. -
Die neueste PowerShell Version, oder zumindest
PowerShell 5.x
und höher sind erforderlich, um die Skripte auszuführen.
Nun, wie erstelle ich Active Directory OU-Berichte mit PowerShell? Lassen Sie uns das herausfinden.
Verständnis der Organizational Unit-Befehle
A Microsoft Active Directory domain container that can hold users, groups, and computers is an organizational unit (OU). It is the smallest unit to which a Windows system administrator can assign a Group Policy setting or account permission. An organizational unit may contain multiple OUs, but each attribute within the containing OU must be distinct.
Lesen Sie auchBereitstellen des Azure AD-Überwachungswerkzeugs
OUs in Active Directory mit PowerShell erstellen
Wir können eine neue Organisations-Einheit in AD erstellen, indem wir den New-ADOrganizationalUnit Befehl verwenden und den Namen eines neuen OU-Objekts angeben. Windows PowerShell erstellt standardmäßig die Organisations-Einheit im Stamm des Domänencontrollers. Zum Beispiel erstellt der folgende Befehl eine OU namens IT auf dem Domänencontroller (DC):
New-ADOrganizationalUnit “IT”
Wenn wir einen anderen OU-LDAP-Pfad benötigen, verwenden Sie den -Path Cmdlet-Parameter, um seine ausgezeichnete Bezeichnung (DN) anzugeben:
New-ADOrganizationalUnit “IT” –Path “OU=Users,DC=InfraSOS,DC=com”
Auch lesenswert Erstellen von Active Directory-Anmeldeberichten mit PowerShell
Verschieben einer OU in einem Active Directory mit PowerShell
Wenn wir ein OU an einen anderen Ort verschieben müssen, verwenden wir das Move-ADObject Cmdlet. Es ist wichtig zu beachten, dass wir das Ziel-OU nicht vor versehentlicher Löschung schützen dürfen. Falls doch, verwenden Sie folgenden Befehl, um den Schutz zu entfernen:
Set-ADOrganizationalUnit -Identity "OU=IT,OU=Users,DC=InfraSOS,DC=Com" -ProtectedFromAccidentalDeletion $False
Nun können wir das OU an einen anderen Ort verschieben:
Move-ADObject -Identity "OU=Regions,OU=Managers,DC=InfraSOS,DC=Com" -TargetPath "OU=IT,DC=InfraSOS,DC=Com"
Auch lesenswert ist der Artikel Erstellen von Active Directory-Gruppenrichtlinienberichten mit PowerShell (GPO)
Umbenennen eines OU im Active Directory mit PowerShell
Verwenden Sie das Rename-ADObject Cmdlet, um eine Organisationseinheit umzubenennen. Der Identity-Parameter gibt das AD-Objekt an, das umbenannt werden soll, und erfordert entweder den DN oder die GUID. Zum Beispiel ändert dieser Befehl den Namen des IT-OU in Marketing:
Rename-ADObject -Identity "OU=Regions,OU=IT,DC=InfraSOS,DC=COM" -NewName Marketing
Wir können auch den Get-ADOrganizationalUnit Cmdlet mit dem -Filter Parameter verwenden, der den gesamten LDAP-Pfad zum OU nicht erfordert. Der Cmdlet durchsucht jedoch das gesamte AD, und der Skriptaktion wird auf alle Organizational Units mit dem Suchbegriff in ihren Namen angewendet:
Get-ADOrganizationalUnit -Filter "Name -eq 'Zones'" | Rename-ADObject -NewName Area
Wir werden über mehr Get OU-Befehle sprechen, sobald wir anfangen, Berichte zu erstellen.
Anwenden einer Gruppenrichtlinie auf ein OU in einem Active Directory mit PowerShell
Um einer Organisations-Einheit eine Gruppenrichtlinie zuzuweisen, können wir den New-GPLink Befehl verwenden, der das angegebene Gruppenrichtlinienobjekt (GPO) und die Organisations-Einheit verknüpft. Darüber hinaus können wir für den Link eine der folgenden Eigenschaften identifizieren:
- Aktiviert – Wenn der Link den Status Aktiviert hat, werden die verarbeiteten Einstellungen des GPOs angewendet, wenn die Gruppenrichtlinie für den Standort, das Domäne und die OU.
- Erzwungen – Wenn der Link den Status Erzwungen hat, können wir die OU in einem untergeordneten Container nicht blockieren.
- Reihenfolge – Der Reihenfolge Status gibt die Priorität der GPO-Einstellungen an.
Zum Beispiel verbindet der folgende Befehl das Block GPO mit dem IT Organizational Unit, wobei der Link sowohl aktiviert als auch erzwungen ist:
New-GPLink -Name "Block" -Target "OU=Districts,OU=IT, DC=InfraSOS, DC=com" -LinkEnabled Yes -Enforced Yes
Benutzer und Computer zu einem neuen OU in einem AD mit PowerShell verschieben
Nachdem wir ein Organizational Unit erstellt und gegebenenfalls einen GPO darauf gelegt haben, werden wir es mit Benutzern und Computern füllen. Die Move-ADObject Cmdlet in PowerShell verschiebt jedes Objekt oder eine Menge von Active Directory-Objekten in ein anderes OU. Das –Identity Parameter gibt an, welches Objekt umverteilt werden soll Active Directory Objekt oder Container.
Es ist wichtig zu beachten, dass wir den vollständigen LDAP-Pfad oder SID des Objekts eingeben müssen; wir können nicht dessen SamAccountName verwenden. Das folgende Beispiel zeigt, wie ein Benutzer zur IT-OU verschoben wird:
Move-ADObject -Identity "CN=marion,CN=Users,DC=InfraSOS,DC=com" -TargetPath "OU=IT,OU=Users,DC=InfraSOS,DC=com"
Verwenden Sie die genaue Syntax, um Computer Objekte zu verschieben. Beispielsweise wird der folgende Befehl den Computer DESKTOP-01 in den Computers-Container verschieben:
Move-ADObject -Identity "CN=DESKTOP-01,OU=Computers,DC=InfraSOS,DC=com" -TargetPath "CN=Workstations,DC=InfraSOS,DC=com"
Mass Move AD Computers and Users to Another OU
Wenn wir eine vordefinierte Liste von Objekten haben, die verschoben werden sollen, können wir sie als Textdatei speichern und dann in Active Directory importieren. Bereiten Sie Ihre Liste vor, indem Sie ein AD-Objekt pro Zeile hinzufügen. Die Textdatei, die die Liste enthält, sollte ungefähr so aussehen:

Verwenden Sie diesen PowerShell-Skript, um AD-Benutzerkonten zu verschieben, die in einer Textdatei aufgeführt sind:
$destOU = "OU=Users,OU=IT,DC=InfraSOS,DC=com"
$usersList = Get-Content -Path "C:\temp\users.txt"
$usersList | ForEach-Object {
$userName = (Get-ADUser -Identity $_.Name).distinguishedName
Move-ADObject -Identity $userName -TargetPath $destOU
}
Um AD-Computerkonten zu verschieben, die in einer Textdatei aufgeführt sind, verwenden Sie das folgende PowerShell-Skript:
$computers = Get-Content -Path "C:\Temp\Computers.txt"
$destOU = "OU=Computers,OU=IT,DC=InfraSOS,DC=com"
ForEach( $computer in $computers){
Get-ADComputer $computer |
Move-ADObject -TargetPath $destOU
}
Auch lesenswert Schauen Sie sich die Active Directory Group Reports an
Entfernen einer OU aus Active Directory mit PowerShell
Der Remove-ADOrganizationalUnit Cmdlet entfernt eine OU. Wir müssen jedoch die OU nicht vor versehentlicher Löschung schützen. Mit den Get-ADOrganizationalUnit und Set-ADOrganizationalUnit Cmdlets können wir die unbeabsichtigte Löschung für jede OU mit dem Wort Zones in ihrem Namen entfernen:
Get-ADOrganizationalUnit -filter "Name -eq 'Zones'" | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $False
Verwenden Sie das folgende Cmdlet, um jede OU, die Zones in ihrem Namen enthält, aus AD zu entfernen:
Get-ADOrganizationalUnit -filter "Name -eq 'Zones'" | Remove-ADOrganizationalUnit –Recursive
Das System wird uns auffordern, die Löschung zu bestätigen:
Beachten Sie, dass das -Recursive -Parameter sowohl die OU als auch alle ihre untergeordneten Objekte entfernt. Das AD löscht die untergeordneten Objekte auch, wenn Schutz vor Löschung für sie eingeschaltet ist.
Verwalten von Organisationseinheiten in AD
Nachdem wir die grundlegenden Befehle und Parameter betreffend Organisationseinheiten besprochen haben, werden wir weiter diskutieren, wie wir OU Berichte mit PowerShell erstellen können.
Eine Liste aller OUs mit PowerShell abrufen
Wir werden den Get-ADOrganizationalUnit Cmdlet verwenden. Zuerst sortieren wir nach CanonicalName. Dieser Befehl zeigt eine OU-Struktur, die einfacher zu lesen ist.
Get-ADOrganizationalUnit -Properties CanonicalName -Filter * |
Sort-Object CanonicalName |
Format-Table CanonicalName, DistinguishedName
Im Folgenden finden Sie ein Beispiel Ausgabe in PowerShell, wenn wir den Befehl ausführen:
Die Ausgabe mit allen OUs in AD ist eine ausgezeichnete Liste. Aber wie können wir feststellen, ob die OU Benutzer enthält?
Erhalten Sie eine Liste aller OUs, einschließlich der Benutzeranzahl, mit PowerShell
Wir verwenden gerne PowerShell, um eine Liste der OUs zu erhalten, einschließlich der Benutzeranzahl. Dieser Befehl wird uns sagen, ob es Benutzer in der OU gibt.
Get-ADOrganizationalUnit -Properties CanonicalName -Filter * |
Sort-Object CanonicalName |
ForEach-Object {
[pscustomobject]@{
Name = Split-Path $_.CanonicalName -Leaf
CanonicalName = $_.CanonicalName
UserCount = @(Get-AdUser -Filter * -SearchBase $_.DistinguishedName -SearchScope OneLevel).Count
}
}
Es wird eine Ausgabe mit der UserCount-Spalteneigenschaft anzeigen. Wenn der Wert der UserCount-Eigenschaft null ist, enthält die OU keine Benutzer. Es wird nicht angezeigt, wenn die OU ein Computersystemobjekt enthält. Dieser Befehl überprüft und zeigt nur eine Benutzeranzahl an.
Lesen Sie auchBereitstellung von Office 365-Benutzerberichten
Exportieren von OUs in AD in eine CSV-Datei mit PowerShell
Wir möchten nun, dass die Liste der OUs in AD exportiert wird, nachdem wir sie gesehen haben. Daher wird das Skript PowerShell verwenden, um die Organizational Units zu erhalten und sie in eine Textdatei zu exportieren.
$results = Get-ADOrganizationalUnit -Properties CanonicalName -Filter * | Sort-Object CanonicalName |
ForEach-Object {
[pscustomobject]@{
Name = Split-Path $_.CanonicalName -Leaf
CanonicalName = $_.CanonicalName
UserCount = @(Get-AdUser -Filter * -SearchBase $_.DistinguishedName -SearchScope OneLevel).Count
}
}
$results | Out-File C:\export_OUs.txt -Encoding UTF8
Ändern Sie die letzte Zeile in folgenden Befehl, wenn wir in eine CSV-Datei exportieren möchten:
$results | Export-Csv -Path C:\export_OUs.csv -NoTypeInformation -Encoding UTF8
Finden Sie die exportierte Datei an der angegebenen Standortnach Ausführung des obigen Befehls.
Vielen Dank, dass Sie Create Active Directory OU Reports with PowerShell gelesen haben. Wir werden jetzt abschließen.
Auch lesen Sie Probieren Sie das Office 365 Management Tool aus.
Abschluss zu Create Active Directory OU Reports with PowerShell
Jetzt, da wir gelernt haben, wie man OUs in Active Directory mit PowerShell-Skripten verwaltet, können wir verschiedene Vorgänge im Zusammenhang mit der OU Verwaltung automatisieren und entsprechende Berichte generieren. Stellen Sie bitte sicher, dass Sie vor dem Ausführen dieser Befehle die Active Directory Papierkorb-Funktion aktivieren, um etwaige versehentliche Löschungen leicht rückgängig machen zu können. Es ist auch ratsam, alle Änderungen an Ihren Organisationseinheiten sorgfältig zu verfolgen.
Schauen Sie sich auch unseren PowerShell-Inhalt in unserem Blog hier an.
Source:
https://infrasos.com/create-active-directory-ou-reports-with-powershell/