Tags: Identity-Management, PowerShell
Das Update 1607 von Windows 10 und Server 2016 enthalten erstmals ein Modul, mit dem sich lokale Benutzerkonten und Gruppen verwalten lassen. Die insgesamt 15 Cmdlets decken alle wesentlichen Operationen vom Anlegen und Löschen eines Benutzers bis zur Verwaltung der Gruppenmitgliedschaften ab.
Wenn man bis dato lokale Konten auf der Kommandozeile oder in Scripts verwalten wollte, dann musste man zum Dienstprogramm net.exe greifen. Für PowerShell existierte zudem in der Technet Gallery ein Modul namens localaccount, das man jedoch extra herunterladen und installieren musste.
Workgroups als primäres Einsatzgebiet
Die Notwendigkeit für ein solches Community-Modul entfällt künftig auch für ältere Versionen des Betriebssystems, weil Microsoft mit dem Windows Management Framework 5.1 auch das Modul Microsoft.PowerShell.LocalAccounts auf Windows 7, 8.1 sowie Server 2008 R2 und 2012 (R2) portiert.
Die neuen Cmdlets helfen vor allem bei der Automatisierung des User-Managements auf Workgroup-Computern. Wenn PCs Mitglied in einer Domäne sind, dann bietet sich dafür der Einsatz von Gruppenrichtlinien an. Sie sind in etwa in der Lage, Benutzer permanent aus der Administratoren-Gruppe zu entfernen. Darüber hinaus kann man mit LAPS auch die Passwörter der lokalen Konten zentral setzen.
Befehle für einfache Aufgaben
Mit Hilfe des Befehls
Get-Command -Module Microsoft.PowerShell.LocalAccounts
kann man sich sämtliche Cmdlets dieses Moduls auflisten lassen.
Dabei zeigt sich, dass einige davon nur eine sehr eingeschränkte Funktion erfüllen. Das gilt etwa für Disable-LocalUser, Enable-LocalUser, Rename-LocalUser, Rename-LocalGroup, Remove-LocalUser oder Remove-LocalGroup. Wie ihr Name schon sagt, dienen sie dazu, lokale Benutzer und Gruppen zu de/aktivieren, umzubenennen und zu löschen.
Als Parameter erwarten sie entweder den Namen oder die SID des Users bzw. der Gruppe, bei den Cmdlets für das Umbenennen kommt noch NewName hinzu:
Rename-LocalUser -Name gmaier -NewName gmeier
Bestehende User und Gruppen anzeigen
Um einen Überblick über die vorhandenen lokalen User und Gruppen zu erhalten, ruft man Get-LocalUser bzw. Get-LocalGroup auf. In der Regel übergibt man ihnen den Namen des Benutzers oder der Gruppe, wobei der Parameter Name in beiden Fällen Wildcards unterstützt:
Get-LocalUser G*
Dieser Befehl zeigt alle Konten an, deren Name mit "G" beginnt. Allerdings geizt die Standarddarstellung mit den Attributen des Users oder Gruppe, was man jedoch durch
Get-LocalUser G*| select *
beheben kann.
Benutzerkonten erstellen und ändern
Für das Anlegen eines neuen Kontos gedacht ist New-LocalUser. Wie sein Gegenstück für Domänen-Benutzer akzeptiert es eine Reihe von Angaben, mit denen sich die Eigenschaften des neuen Kontos festlegen lassen. Diese sind:
- AccountExpires <DateTime>
- AccountNeverExpires
- Description <String>
- Disabled
- FullName<String>
- Name <String>
- Password <SecureString>
- PasswordNeverExpires
- UserMayNotChangePassword
Verpflichtend sind dabei die Angaben Name und Password bzw. NoPassword, wenn das Konto nicht mit einem Kennwort geschützt werden soll. Will man gleich beim Erstellen eines Benutzers ein Passwort eingeben, dann muss man dieses als Secure String übergeben, den man zuvor über
Read-Host -AsSecureString
oder ConvertTo-SecureString erzeugt:
$pw = ConvertTo-SecureString -String "P@ssw0rd" -AsPlainText -Force
New-LocalUser -Name Test -AccountExpires "31.12.2017" -Password $pw
Begnügt man sich mit den minimalen Angaben für New-LocalUser, dann kann man sämtliche von diesem Cmdlet unterstützte Eigenschaften nachträglich mit Set-LocalUser und den exakt gleichen Parametern ergänzen oder ändern.
Management von Gruppen
Im Vergleich zu Benutzerkonten ist das Anlegen einer Gruppe ziemlich einfach. Das entsprechende Cmdlet erwartet nur den Namen und optional eine Beschreibung für die Gruppe:
New-LocalGroup -Name Spieler -Description "Gruppe für Gamer"
Eine wesentliche Aufgabe beim Management von Gruppen besteht im Hinzufügen und Entfernen von Mitgliedern. Einen Überblick über die Objekte in einer Gruppe kann man sich verschaffen mit
Get-LocalGroupMember -Name Administratoren
In diesem Beispiel erhält man alle Benutzer und Gruppen, die in Administratoren enthalten sind. Um einen Benutzer einer Gruppe hinzuzufügen, verwendet man Add-LocalGroupMember. Das Cmdlet benötigt Angaben zur Gruppe und zu den Benutzern, im Allgemeinen als Namen:
Add-LocalGroupMember -Name Administratoren -Member gmeier
Neben lokalen Benutzern kann man auch solche aus der Domäne oder Microsoft-Accounts auf diese Weise in lokale Gruppen aufnehmen, wobei der Parameter Member auch mehrere Werte akzeptiert, wenn diese durch Kommata voneinander getrennt sind.
Um User aus der Gruppe der Administratoren zu entfernen, führt man einen Befehl nach diesem Muster aus:
Remove-LocalGroupMember -Name Administratoren -Member gmeier
Anstelle von Benutzernamen kann man sowohl bei Add-LocalGroupMember als auch bei Remove-LocalGroupMember für Member eine Gruppe angeben.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- PowerShell 7.1 (als Store-App) verfügbar, Updates für PSReadLine, SecretManagement und PowerShellGet
- Konten im Active Directory entsperren oder aktivieren mit PowerShell
- Passwort-Einstellungen mit PowerShell: Kennwort läuft nie ab, Passwort nicht erforderlich
- Managed Service Accounts einrichten mit PowerShell
- Mitgliedschaft eines Users in Active-Directory-Gruppen ausgeben
Weitere Links