Mit der Cmdlet-Sammlung „Microsoft.PowerShell.LocalAccounts“ von Microsoft können Administratoren lokale Benutzer und Gruppen einfacher mit PowerShell verwalten. Bisher musste die Sammlung separat heruntergeladen und in PowerShell importiert werden; zusätzlich war außerdem die Installation des Windows Management Framework 5.1 erforderlich. In den Betriebssystemen Windows Server 2016 und Windows 10 ist die Cmdlet-Sammlung als Standardmodul bereits enthalten.
Das Modul „LocalAccounts“ umfasst 15 Cmdlets. Mit dem folgenden Befehl können Sie die vollständige Liste anzeigen:
Get-Command -Module Microsoft.PowerShell
- Add-LocalGroupMember: Hinzufügen eines Benutzers zur lokalen Gruppe
- Disable-LocalUser: Deaktivieren eines lokalen Benutzerkontos
- Enable-LocalUser: Aktivieren eines lokalen Benutzerkontos
- Get-LocalGroup: Anzeigen der Einstellungen für die lokale Gruppe
- Get-LocalGroupMember: Anzeigen einer Liste aller Mitglieder der lokalen Gruppe
- Get-LocalUser: Anzeigen der Einstellungen für ein lokales Benutzerkonto
- New-LocalGroup: Erstellen einer neuen lokalen Gruppe
- New-LocalUser: Erstellen eines neuen lokalen Benutzerkontos
- Remove-LocalGroup: Entfernen einer lokalen Gruppe
- Remove-LocalGroupMember: Entfernen eines Mitglieds aus einer lokalen Gruppe
- Remove-LocalUser: Entfernen eines lokalen Benutzerkontos
- Rename-LocalGroup: Umbenennen einer lokalen Gruppe
- Rename-LocalUser: Umbenennen eines lokalen Benutzerkontos
- Set-LocalGroup: Ändern der Einstellungen für eine lokale Gruppe
- Set-LocalUser: Ändern der Kontoeinstellungen für einen lokalen Benutzer
Verwalten lokaler Benutzerkonten mit PowerShell
Sie können mit diesen Befehlen typische Aufgaben rund um die Verwaltung lokaler Benutzer auf einem Windows 10-Computer ausführen.
Anzeigen von Benutzern und ihrer Eigenschaften mit PowerShell
Zunächst erstellen Sie eine Liste aller lokalen Benutzerkonten auf dem Computer. Hierzu verwenden Sie das Cmdlet „Get-LocalUser“:
Get-LocalUser
Wie Sie sehen können, gibt es zwei lokale Benutzerkonten. Eines davon ist deaktiviert (in der Spalte „Enabled“ wird der Wert „False“ angezeigt).
Wenn Sie alle Eigenschaften und deren Werte für ein lokales Benutzerkonto anzeigen möchten, müssen Sie das Cmdlet „Get-LocalUser“ mit den folgenden Parametern verwenden:
Get-LocalUser -Name ‘guest’ | Select-Object *
Um den Wert eines Attributs eines bestimmten lokalen Benutzerkontos anzuzeigen, geben Sie den Namen des Kontos nach dem Parameter „Select-Object“ ein. In diesem Beispiel soll der Wert des Attributs „PasswordLastSet“ für das Konto mit dem Benutzernamen „administrator“ angezeigt werden:
Get-LocalUser -Name ‘administrator’ | Select-Object PasswordLastSet
Erstellen eines lokalen Benutzers mit PowerShell
Sie erstellen nun mit dem Cmdlet „New-LocalUser“ einen neuen Benutzer. Mit diesem Cmdlet können Sie folgende Arten von Benutzerkonten erstellen:
- lokale Windows-Benutzerkonten
- Microsoft-Konten
- Azure Active Directory-Konten
Bei der Erstellung eines lokalen Benutzerkontos sollten Sie das Kennwort niemals als Nur-Text eingeben, sondern stets mit dem Parameter „?AsSecureString“ oder „?ConvertTo-SecureString“ in eine sichere Zeichenfolge konvertieren. Mit diesem Befehl erstellen Sie ein neues lokales Benutzerkonto:
$UserPassword = Read-Host –AsSecureString New-LocalUser "Netwrix" -Password $UserPassword -FullName "Netwrix" -Description "CompleteVisibility"
In einer Windows 10-Umgebung können Benutzer über ihr Microsoft-Konto autorisiert werden. Sie können somit ein neues lokales Benutzerkonto erstellen, das mit den Anmeldedaten für ein Microsoft-Konto verknüpft ist. Verwenden Sie hierzu das folgende Skript (Sie müssen kein Kennwort eingeben, da dieses in der Microsoft-Cloud gespeichert ist):
New-LocalUser -Name "MicrosoftAccount\SomeAccount@outlook.com" -Description "Microsoft Account"
Um ein lokales Konto zu erstellen, das mit Ihrem Azure AD verknüpft ist, verwenden Sie den folgenden Befehl:
New-LocalUser -Name "AzureAD\Netwrix@enterprise.com" -Description "Azure AD Account"
Ändern des Kennworts oder der Kennworteigenschaften eines lokalen Benutzers mit PowerShell
Um das Kennwort eines lokalen Benutzerkontos zu ändern, benötigen Sie das Cmdlet „Set-LocalUser“. So ändern Sie das Kennwort des lokalen Administrators:
$UserPassword = Read-Host –AsSecureString Set-LocalUser -Name Administrator -Password $UserPassword –Verbose
Um ein niemals ablaufendes Kennwort für einen lokalen Benutzer mit PowerShell festzulegen, müssen Sie das folgende Skript ausführen:
Set-LocalUser -Name Netwrix –PasswordNeverExpires $False
Löschen eines lokalen Benutzerkontos mit PowerShell
Für das Entfernen eines lokalen Benutzerkontos müssen Sie das Cmdlet „Remove-LocalUser“ verwenden:
Remove-LocalUser -Name Netwrix -Verbose
Verwalten lokaler Gruppen mit PowerShell
Sie führen nun verschiedene Aufgaben für die Verwaltung lokaler Gruppen durch.
Anzeigen von lokalen Gruppen mit PowerShell
Erstellen Sie zunächst eine Liste aller Gruppen auf dem Windows-Server:
Get-LocalGroup
Hinzufügen einer lokalen Gruppe mit PowerShell
Erstellen Sie nun eine neue Gruppe:
New-LocalGroup -Name 'Netwrix Users' -Description 'Netwrix Users Group'
Hinzufügen von Benutzern zu einer lokalen Gruppe mit PowerShell
Um einen Benutzer (oder eine Benutzergruppe) zu einer lokalen Gruppe hinzuzufügen, benötigen Sie das Cmdlet „Add-LocalGroupMember“. In unserem Beispiel möchten Sie Benutzer zur lokalen Administratorgruppe hinzufügen, diesen Vorgang jedoch nicht für jeden einzelnen Benutzer wiederholen. Fügen Sie die Gruppe „Netwrix Users“ zur lokalen Administratorgruppe hinzu:
Add-LocalGroupMember -Group 'Administrators' -Member ('Netwrix',’Netwrix Users') –Verbose
Wenn Ihr Computer oder Server einer Domäne angehört, können Sie auch Domänenkonten und -gruppen zu lokalen Gruppen hinzufügen, um diesen Benutzern besondere lokale Rechte auf dem Server zu erteilen. Fügen Sie die Benutzer im Format „Domänenname\Benutzer“ (für Benutzer) bzw. „Domänenname\Domänengruppe“ (für Gruppen) hinzu.
Anzeigen der Zugehörigkeit zu einer bestimmten Gruppe mit PowerShell
Zeigen Sie nun eine Liste aller Mitglieder einer bestimmten lokalen Gruppe an:
Get-LocalGroupMember -Group 'Netwrix Users'
Wie Sie sehen können, werden mit dem Befehl alle lokalen Konten und Gruppen angezeigt, die der Gruppe „Netwrix Users“ angehören. Es werden zwar nur lokale Konten und Gruppen aufgeführt, doch können Sie mit diesem Befehl auch Domänenbenutzer und -gruppen sowie alle Microsoft- und Azure AD-Konten anzeigen.
Anzeigen der Gruppenzugehörigkeit eines Benutzers mit PowerShell
Um alle Gruppen anzuzeigen, denen ein bestimmter Benutzer angehört, führen Sie das folgende Skript aus:
foreach ($LocalGroup in Get-LocalGroup) { if (Get-LocalGroupMember $LocalGroup -Member 'Guest' –ErrorAction SilentlyContinue) { $LocalGroup.Name } }
Entfernen einer lokalen Gruppe mit PowerShell
Für das Entfernen eines lokalen Benutzerkontos aus einer Gruppe verwenden Sie das Cmdlet „Remove-LocalGroupMember“:
Remove-LocalGroupMember -Group 'Netwrix Users' –Member 'guest'
Remote-Verwalten lokaler Benutzer und Gruppen mit PowerShell
Für die Remote-Verwaltung lokaler Benutzerkonten und Gruppen müssen Sie mit den Cmdlets „Invoke-Command“ und „Enter-PSSession“ über WinRM eine Verbindung zu den Remote-Workstations herstellen. Wenn Sie beispielsweise die Zugehörigkeit zur lokalen Administratorgruppe remote auf mehreren Computern anzeigen möchten, müssen Sie das folgende Skript ausführen:
$search = new-pssession -computer pcname1,pcname2,pcname3 invoke-command -scriptblock {Get-LocalGroupMember -Group 'Administrators'} -session $search -hidecomputername | select * -exclude RunspaceID | out-gridview -title "LocalAdmins"
Wie Sie sehen konnten, ist es relativ einfach, lokale Gruppen und Benutzer mit PowerShell zu verwalten. Zur Gewährleistung der Sicherheit, Compliance und Geschäftskontinuität sollten Sie diese Änderungen jedoch stets überwachen. Weitere Informationen zur Konfiguration der nativen Überwachungsfunktionen finden Sie im Kurzübersichtsleitfaden zur Überwachung von Windows Server.