Benutzerverwaltung mit PowerShell in Active Directory
Die Benutzerverwaltung in Active Directory kann mit PowerShell automatisiert werden. Mit diesen Befehlen sind auch Skripte denkbar, die wiederum beim Identitätsmanagement genutzt werden können.
Geht es um die Automatisierung von Verwaltungsaufgaben in Active Directory, gehört die PowerShell zu den effektivsten, transparentesten und vor allem flexibelsten Tools. Durch die Einbindung in Lösungen, wie FirstWare IDM-Portal, können Administratoren ohne großen Aufwand eigene Skripte schreiben, mit denen sich auch tausende Benutzer automatisiert verwalten lassen.
Index
Cmdlets zur AD Verwaltung von Benutzern
Neue Benutzer werden mit dem Cmdlet „New-ADUser“ angelegt. Anpassen können Sie die einzelnen Attribute mit „Set-ADUser“. Es besteht auch die Möglichkeit, Benutzer in der PowerShell mit „Remove-ADUser“ zu löschen. Wollen Sie Daten von Benutzern in Active Directory auslesen, verwenden Sie das Cmdlet „Get-ADUser“. Eine Liste aller Parameter, welche die Cmdlets zur Verfügung stellen, können Sie am Beispiel von „New-ADUser“ mit dem folgenden Befehl anzeigen:
1 |
Get-Command New-ADUser -Syntax |
Wollen Sie Daten von Benutzern in Active Directory auslesen, verwenden Sie das Cmdlet „Get-ADUser“. Das Cmdlet bietet verschiedene Filter. Wollen Sie zum Beispiel mit einer Liste die Kontonamen anzeigen, verwenden Sie:
1 |
Get-ADUser -Filter * -Properties samAccountName | select samAccountName |
Damit die Cmdlets auch in Windows 10 zur Verfügung stehen, müssen die Remoteserver-Verwaltungstools installiert werden. Auch hier kann die PowerShell genutzt werden:
1 |
Add-WindowsCapability -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0 -Online |
Danach stehen die Cmdlets für die Verwaltung von Active Directory Benutzern ebenfalls in Windows 10 zur Verfügung.
Benutzer importieren – Import-CSV und New-ADUser
Ein weiterer Vorteil in der Benutzerverwaltung mit PowerShell ist die Massenverwaltung. Die Daten der Benutzer können in CSV-Dateien gespeichert und mit „New-ADUser“ genutzt werden. Dadurch kann eine Vielzahl an Benutzern angelegt werden. Hier arbeitet „New-ADUser“ mit dem Cmdlet „Import-Csv“ zusammen. CSV-Dateien können Sie auch mit einer Textdatei erstellen. Der Aufbau der Datei kann folgendermaßen aussehen. In der ersten Spalte werden die Attribute definiert und darunter die Werte. Alle Einträge können Sie mit Komma voneinander trennen.
1 2 3 4 5 |
Name,Vorname,Nachname,Password,Department Markus.Mueller,Markus,Mueller,Passw0rd1000 Michael.Mann,Michael,Mann,Passw0rd1000 Sonja.Kil,Sonja,Kil,Passw0rd1000 Lotta.Ittli,Lotta,Ittli,Passw0rd1000 |
Wenn sehr viele Anwender angelegt werden sollen, ist es sinnvoller, eine Tabellenkalkulation zu verwenden, um die einzelnen Zeilen und Spalten mit Daten zu füllen.
Die Datei speichern Sie in ein Verzeichnis und können in der PowerShell aus diesem oder einem anderen Verzeichnis (Pfad beachten) die Daten importieren. Der Import-Vorgang wird durch das Cmdlet „Import-Csv“ angestoßen. Dieses gibt die Daten an „New-ADUser“ durch eine Pipeline weiter, um die Benutzerkonten anzulegen, zum Beispiel mit:
1 2 |
Import-Csv .\benutzer.csv | New-ADUser -AccountPassword (ConvertTo-SecureString "Password123" -AsPlainText -force) |
In Skripten können die eingelesenen Daten von „Import-Csv“ auch in einer Variablen gespeichert werden. Auch die OU, in der Sie die Konten integrieren wollen, können Sie als Variable definieren, zum Beispiel mit:
1 2 |
$Import =Import-CSV ".\Benutzer.csv" $OU = "OU=Frankfurt,DC=Joos,DC=int" |
Vorgänge beim Kopieren von Benutzern – Vorlagen erstellen
Wollen Sie Benutzer schnell anlegen? Die Versuchung, einen Benutzer zu duplizieren, um Zeit zu sparen, ist sehr groß. Sie können jedoch Fehler machen, z. B. es vergessen, einen Zugriff zu löschen. PowerShell ermöglicht die Anlage von Benutzer durch Vorlagen. Die Benutzerverwaltung mit PowerShell hilft daher, Fehler zu vermeiden. In vielen Fällen kann es sinnvoll sein, nicht immer neue Benutzerobjekte anzulegen, sondern vorhandene, ähnliche Objekte zu kopieren. Da viele Benutzereigenschaften ohnehin ähnlich sind, können dadurch auch in Portalen, wie dem FirstWare IDM-Portal, zahlreiche Konten schneller erstellt werden. Die Daten der Benutzer werden mit „Get-ADUser“ ausgelesen und als Variable gespeichert, zum Beispiel mit:
1 |
$template = Get-ADUser -Identity joost -Properties State,Department,Country,City |
Damit der UserPrincipalName des Benutzerkontos eindeutig bleibt, kann der Wert aus der Variablen gelöscht werden:
1 |
$template.UserPrincipalName = $null |
Der Befehl verwendet die gespeicherte Variable „$template“, liest den Wert „UserPrincipalName“ aus und löscht diesen durch den Wert „$null“.
Der Inhalt der Variablen kann anschließend mit „$template“ angezeigt werden. Hier sehen Sie auch, dass der Inhalt von „UserPrincipalName“ leer ist.
Um einen neuen Benutzer anzulegen, verwenden Sie mit „New-ADUser“ den Inhalt der Variablen „$template“ und tragen die Daten, die eindeutig für den Benutzer sein sollen, selbst ein, zum Beispiel mit:
1 |
New-ADUser -Instance $template -Name „Paula Joos“ -SamAccountName „joosp“ -AccountPassword (Read-Host -AsSecureString "Kennwort") -Enabled $True |
Auf Anforderung kann das Kennwort auch vorgegeben und als Variable gespeichert werden:
1 |
$pass= "kennw0rt" | ConvertTo-SecureString -AsPlainText -Force |
Die Benutzer müssen nach der ersten Anmeldung ihr Kennwort ändern, melden sich aber mit dem vorher definierten Kennwort an:
1 |
New-ADUser -Instance $template -Name „Paula Joos“ -SamAccountName „joosp“ -AccountPassword $pass -Enabled $True -ChangePasswordAtLogon $true |
Neue Benutzer mit PowerShell anlegen – Erweiterte Möglichkeiten
Beim Anlegen von Benutzerkonten können auch erweiterte Informationen gesteuert werden. Ein Beispiel ist das Hinzufügen eines Zertifikats aus einer Datei:
1 2 |
New-ADUser joost -Certificate (new-object System.Security.Cryptography.X509Certificates.X509Certificate -ArgumentList „export.cer“) |
Sollen Anpassungen bei vorhandenen Benutzerkonten vorgenommen werden, nutzen Sie „Set-ADUser“. Alle Optionen eines Kontos, die durch Parameter in „New-ADUser“ gesetzt werden können, sind auch durch das Cmdlet „Set-ADUser“ steuerbar.
In der PowerShell können auch erweiterte Attribute zu Benutzerkonten hinzugefügt werden, zum Beispiel mit:
1 |
Set-AdUser joost -Add @{"extensionAttribute6"="MeinWert"} |
Die Attribute lassen sich mit „Get-ADUser“ auch wieder auslesen:
1 |
Get-ADUser joost -Properties extensionattribute6 |
Mit „Set-ADUser“ können auch mehrere Attribute bei zahlreichen Benutzern auf einmal geändert werden. Sollen zum Beispiel verschiedene Benutzer in einem Büro einem anderen Büro zugeordnet werden, rufen Sie zunächst die Benutzerkonten ab, für die Änderungen vorgenommen werden sollen. Dadurch können Sie überprüfen, ob die richtigen Konten verwendet werden:
1 |
Get-AdUser -Filter 'Office -like "Berlin"' |
Die Ausgabe kann auch in einer Variablen gespeichert werden. Damit können Sie folgende Befehle vereinfachen, weil Sie nur die Variable angeben müssen:
1 |
$A = Get-AdUser -Filter 'Office -like "Berlin"' |
Mit $A wird der Inhalt der Variablen angezeigt. Hier kann mit der Pipeline und dem Cmdlet „Select-Object“ die Anzeige auch optimiert werden:
1 |
$A | Select-Object Name, Office |
Anschließend kann der Inhalt der Variablen verwendet werden, um das Büro für die jeweiligen Anwender zu ändern. Dazu verwenden Sie eine For-Each-Schleife:
1 |
ForEach ($User in $A){Set-ADUser -Identity $User -Office 'Stuttgart'} |
Anschließend können Sie die Anpassung wieder mit Get-ADUser überprüfen:
1 |
Get-ADUser -Filter 'Office -like "Stuttgart"' |
AD Benutzerverwaltung mit IDM-Portal
Das IDM-Portal ist die Alternative für zu lange und akribische PowerShell Skripte. Nicht jeder Administrator ist ein versierter PowerShell Experte. Mit PowerShell können viele Aufgaben der Active Directory-, aber auch der Entra ID/M365-Verwaltung vereinfacht und automatisiert werden. Nutzen Sie dafür das IDM-Portal – unser Identity & Access Management System mit integriertem PowerShell Provider. PS-Skripte laufen automatisch und im richtigen Moment im Hintergrund ab. Ihre AD/AzureAD/M365-Daten sind immer up-to-date.