Lokale Benutzer und Gruppen verwalten mit PowerShell

    Benutzer-ManagementDas Update 1607 von Windows 10 und Server 2016 enthalten erstmals ein Modul, mit dem sich lokale Benutzer­konten und Gruppen verwalten lassen. Die insgesamt 15 Cmdlets decken alle wesentlichen Operationen vom Anlegen und Löschen eines Benutzers bis zur Verwaltung der Gruppen­mitglied­schaften ab.

    Wenn man bis dato lokale Konten auf der Kommando­zeile oder in Scripts verwalten wollte, dann musste man zum Dienst­programm 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 Betriebs­systems, weil Microsoft mit dem Windows Management Framework 5.1 auch das Modul Microsoft.Power­Shell.Local­Accounts 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 Gruppen­richtlinien 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.

    Cmdlets für das Management lokaler User und Gruppen

    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 Standard­darstellung 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 Eigen­schaften 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

    Neuen lokalen Benutzer anlegen mit New-LocalUser

    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 Benutzer­konten 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 Admini­stratoren 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.

    Keine Kommentare