11 Tipps für Gruppen und Benutzerkonten in Active Directory
Active Directory kann umfassend mit der PowerShell verwaltet werden. Im nachfolgenden Beitrag zeigen wir 11 Tipps, wie Sie die Gruppen- und Benutzerverwaltung im Active Directory mit Powershell-Skripten einfach automatisieren. Auch die Vorteile der Cmdlets, Aufgaben in Skripten und Massen-Aktionen durchzuführen, sind in diesem Beitrag zu finden.
Index
Tipp 1: Mehrere Benutzer auf einmal mit der PowerShell anlegen
Neben der Möglichkeit Benutzer über den Import einer CSV-Datei anzulegen, können mit der PowerShell auch mehrere Benutzer auf einmal angelegt werden. Sinnvoll ist das vor allem dann, wenn Benutzerkonten nicht umfassend personalisiert werden sollen, oder wenn Benutzerkonten für Schulungsräume angelegt werden sollen. In einem Skript werden dazu zunächst verschiedene Variablen angelegt:
1 2 3 |
$pass= "kennw0rt" | ConvertTo-SecureString -AsPlainText -Force $Nummer=1..20 Foreach ($z in $Nummer) {New-AdUser -Name Schulung$z -Path „OU=Schulung, DC=Joos, DC=int“ -enabled $True -ChangePasswordAtLogon $true -AccountPassword $pass} |
Mit dem sehr einfachen Skript können in kurzer Zeit sehr viele Benutzerkonten erstellt werden.
Tipp 2: Benutzerkonten verschieben
Mit dem Cmdlet „Move-ADObject“ können mehrere Objekte, auch Benutzerkonten, gleichzeitig verschoben werden. Dazu können zum Beispiel zunächst die Benutzerkonten mit „Get-ADUser“ gefiltert werden. Passt der Filter, besteht der nächste Schritt darin die gefundenen Benutzer in die gewünschte OU zu verschieben, in dem das Ergebnis von „Get-ADUser“ an „Move-ADObject“ weitergegeben wird.
Um zum Beispiel die in Tipp 1 angelegten Benutzerkonten in eine andere OU zu verschieben, werden zunächst die Benutzerkonten angezeigt:
1 |
Get-ADUser -Filter * -SearchBase "OU=Schulung,DC=Joos,DC=int" |
Stimmt die Anzeige, kann das Ergebnis mit Pipe („|“) an „Move-ADObject“ übertragen werden. Hier ist dann auch die neue OU notwendig:
1 |
Get-ADUser -Filter * -SearchBase "OU=Schulung,DC=Joos,DC=int" | Move-ADObject -TargetPath "OU=Schulung-berlin,OU=Schulung, DC=Joos, DC=int" |
Tipp 3: Benutzerkonten löschen
Auf dem gleichen Weg wie das Verschieben von Benutzerkonten, können Benutzer auch entfernt werden. Dazu wird das Cmdlet „Remove-ADUser“ verwendet. Zum Löschen der Benutzerkonten, die in Tipp 1 angelegt und in Tipp 2 verschoben wurden, besteht auch hier wieder die Möglichkeit mit Pipe („|) zu arbeiten. Das Ergebnis der Suche mit „Get-ADUser“ übergeben Sie in diesem Fall an „Remove-ADUser“:
1 |
Get-ADUser -SearchBase "OU=Schulung-Berlin, OU=Schulung, DC=Joos,DC=int" -Filter * | Remove-ADUser -Confirm:$false -Verbose |
Alternative zu Tipp 2 und Tipp 3
Die Fachabteilung führt die AD Benutzerverwaltung durch (IAM Delegation). Mit dem IDM-Portal ist es möglich ein entsprechendes PS-Skript einzubinden. Deaktiviert der zuständige Mitarbeiter einen Benutzer mit dem IDM-Portal, verschiebt dieses das Benutzerkonto auch in eine andere OU. Es lassen sich auch Aktionen nach dem Löschen von Benutzer-, Gruppen- oder Computerobjekten durchführen.
Tipp 4: Inaktive Benutzer- und Computerkonten suchen
Um in der PowerShell alle nicht aktiven Benutzerkonten anzuzeigen, kann der folgende Befehl verwendet werden:
Search-ADAccount -UsersOnly -AccountInactive
Wollen Sie Benutzerkonten, die in einer bestimmten Zeitspanne inaktiv waren anzeigen, verwenden Sie das Cmdlet „New-Timespan“. Die Zeitspanne können Sie auch in einer Variablen speichern:
1 |
$time = New-Timespan -Days 120 |
Danach suchen Sie nach inaktiven Benutzerkonten innerhalb dieser Zeitspanne:
1 |
Search-ADAccount -UsersOnly -AccountInactive -TimeSpan $time |
Auch hier kann das Ergebnis an ein anderes Cmdlet weitergegeben werden, um die Anzeige zu verbessern:
1 |
Search-ADAccount -UsersOnly -AccountInactive | Get-ADuser | Sort LastLogOnDate | Select Name,Department,Title,DistinguishedName |
An diesem Beispiel ist zu sehen, dass die Ergebnisse von Cmdlets mehrmals mit Pipe („|“) an andere Cmdlets weitergegeben werden. In der PowerShell können auch alle Benutzerkonten angezeigt werden, die sich noch nie angemeldet haben:
1 |
Get-ADUser -Filter {(lastlogontimestamp -notlike "*")} | Select Name,DistinguishedName |
FirstWare AD-Inspector
Unser kostenloses AD-Analyse-Tool bietet Ihnen 17 Reports, darunter 3 für das suchen von inaktiven Accounts. Allerdings ganz ohne PowerShell.
Tipp 5: Benutzerkonten in Gruppen aufnehmen
Mit dem Cmdlet „Add-AdGroupMember” können Benutzer in Active Directory-Gruppen aufgenommen werden. Ein Beispiel dafür ist:
1 |
Add-AdGroupMember -Identity Schulung -Members joost, joose, muellert |
Die Mitglieder der Gruppe können Sie anschließend mit Get-ADGroupMember -Identity Schulung anzeigen.
Um eine neue Gruppe mit der Bezeichnung „Schulung“ anzulegen, in der später alle Benutzerkonten aufgenommen werden, die in Tipp 1 und Tipp 2 angelegt wurden, verwenden Sie:
1 |
New-ADGroup "Schulung" -Path "OU=Schulung,DC=Joos,dc=int" -GroupCategory Security -GroupScope Global -PassThru -Verbose |
Tipp 6: Mehrere Benutzerkonten auf einmal in Gruppen aufnehmen
Um die Benutzerkonten aus Tipp 1 und Tipp 2 auf einmal in einer Gruppe aufzunehmen, werden die Benutzerkonten zunächst angezeigt und danach an das Cmdlet „Add-AdGroupMember“ übergeben:
1 2 |
$User = Get-ADUser -SearchBase "OU=Schulung-Berlin, OU=Schulung, DC=Joos,DC=int" -Filter * Add-AdGroupMember -Identity Schulung -Members $User |
PowerShell IAM außerhalb der IT
Datenverantwortliche außerhalb der IT können PowerShell Skripte unbewußt anwenden. Dafür erhalten Sie eine einfache GUI, deren Funktionalität durch Admins vorbereitet wird. Mehr zu PowerShell IAM. Viele der 11 Tipps können per PowerShell eingebaut werden.
Tipp 7: Objekte in Active Directory zählen
Nummer 7 unserer 11 Tipps in der PowerShell ist das Zählen von Objekten im Active Directory. Am Beispiel der in dieser Tippreihe angelegten Benutzer und -Gruppen in der OU „Schulung-Berlin“ ist der Befehl dazu:
1 |
(Get-ADUser -Filter * -SearchBase "OU=Schulung-Berlin, OU=Schulung, DC=Joos,DC=int").count |
Auch Gruppenmitglieder können auf diesem Weg gezählt werden, zum Beispiel für die Gruppe, die in den Tipps 5 und 6 angelegt wurde.
1 |
(Get-ADGroupMember -Identity "Schulung").count |
Um alle Benutzerkonten in Active Directory zu zählen verwenden Sie:
1 |
(Get-ADUser -Filter "Name -like '*'").count |
Alle Computerkonten zählen Sie mit:
1 |
(Get-ADComputer -Filter "Name -like '*'").count |
Um alle Windows Server-Systeme anzuzeigen, verwenden Sie:
1 |
(Get-ADComputer -Filter "OperatingSystem -like '*Server*'").count |
Tipp 8: Alle nicht deaktivieren Benutzerkonten anzeigen
Um sich alle Benutzerkonten anzeigen zu lassen, die in Active Directory vorhanden und nicht deaktiviert sind kann folgender Befehl verwendet werden:
1 |
get-aduser -ldapfilter "(&(&(objectCategory=user)(userAccountControl=512)))" | where-object -property enabled -eq true | fl name |
Mit userAccountControl und dem Wert 512 wird das Flag „NORMAL_ACCOUNT“ weitergegeben (siehe Microsoft).
Tipp 9: Alle deaktivierten Benutzerkonten anzeigen
Um sich alle deaktivierten Benutzerkonten anzeigen zu lassen, können Sie den folgenden Befehl verwenden:
1 |
Search-ADAccount –AccountDisabled -UsersOnly | Select -Property Name,DistinguishedName |
Tipp 10: Leere Gruppen in Active Directory anzeigen
Um sich leere Gruppen in Active Directory anzeigen zu lassen, verwenden Sie den folgenden Befehl:
1 |
Get-ADGroup -Filter * -Properties Members | where { -not $_.Members} | select Name |
Tipp 11: Inaktive Computerkonten in der PowerShell anzeigen
In der PowerShell können auch schnell und einfach Computerkonten angezeigt werden, die schon lange nicht mehr aktiv genutzt wurden:
1 |
Get-ADComputer -Filter * -Properties * | Sort LastLogonDate | FT Name, LastLogonDate |
Im Beitrag „AD PowerShell Basics“ auf Active Directory FAQ gehen wir auf die grundlegenden Möglichkeiten ein, mit den wichtigsten Cmdlets Benutzer und Gruppen in Active Directory anzulegen, zu verwalten und anzuzeigen.
Neben den 11 Tipps hilft Ihnen das FirstWare IDM-Portal in der Praxis, Gruppen und Benutzerkonten zu verwalten. Statt PowerShell-Skripte durch Admins auszuführen, können dies auch Ihre Anwender via benutzerfreundlicher Eingabemasken. Sicher und ohne Kenntnisse – die technischen Aktionen laufen einfach im Hintergrund und im Echtzeit ab. Für Informationen dazu stehen wir Ihnen gern zur Verfügung.