Mit der PowerShell einen neuen Benutzer anlegen, welcher sofort nach dem einloggen sein Passwort ändern muss

Benutzer muss beim ersten mal Anmelden sein Passwort ändern - Konfiguration mit der PowerShell

Allgemeines

Auch mit der Windows PowerShell lässt ich natürlich ein neuer Benutzer anlegen. Als Cmdlet wird dafür “New-LocalUser” benötigt. Generell muss dabei in erster Linie beachtet werden, dass man eine Powershell Konsole als Administrator öffnet. Am besten ist natürlich immer die Windows PowerShell ISE. Damit hat man wesentlich mehr Möglichkeiten. Zum Anlegen werden grundsätzlich mal folgende Parameter benötigt.

  • Name
  • Passwort
  • Beschreibung des Benutzers
  • Vollständiger Name

Wobei die letzten beiden Angaben optional sind. Am wichtigsten ist im Prinzip die Vergabe eines Passwortes. Es wäre auch möglich einen Benutzer ohne Passwort anzulegen, allerdings sollte man das aus sicherheitstechnischen Gründen nicht tun. Jedoch für die Konfiguration, dass ein Benutzer beim ersten Mal Anmelden sein Passwort ändern muss, wird der Parameter NoPasswort schon benötigt.

Neuen Benutzer anlegen

Im Allgemeinen lässt sich die komplette Hilfe wieder dadurch anzeigen, indem man die PowerShell Hilfe bemüht. Am besten gefolgt vom Parameter Detailed. Somit erhält man nicht nur die Beschreibung, sondern auch gleich noch ausführliche Beispiele. Sollte die Hilfe für die Befehle nicht angezeigt werden, so muss man vorab die Hilfe updaten.

Update-Help
Get-help New-Local-User -Detailed

Als Beispiel wird jetzt der neue Benutzer testuser angelegt. Das Passwort soll dabei über die Konsole eingelesen werden und verschlüsselt gespeichert. Dafür verwendet man das Cmdlet Read-Host und AssecureString. Gespeichert wird das Passwort anschließend in die Variable $Passwort

$Passwort = Read-Host - AssecureString

Mithilfe des Passwortes kann jetzt der Benutzer angelegt werden.

New-LocalUser "testuser" -Password $Passwort -FullName "Neuer Test Benutzer" -Description "Neu angelegter Benutzer"

Nachdem anlegen, kann gleich geprüft werden, ob er aktiviert ist und auch in welchen Gruppen er sich befindet. Ein regulärer Benutzer muss sich immer in der Gruppe “Benutzer” befinden. Sollte dies nicht der Fall sein, so würde er beim Anmeldefenster auch nicht angezeigt.

Get-LocalGroupMember -Group Benutzer

Neuer Benutzer muss beim ersten mal Anmelden sein Passwort ändern

Diese Konfiguration ist leider etwas sehr Tricky. In der Regel ist es eine Standardvariante, wenn man mehrere neue Benutzer anlegt. Man verwendet ein Standardpasswort und sobald sich der neue Benutzer das erste Mal anmelden möchte, wird er aufgefordert sein Passwort zu ändern. Einen einfachen Parameter wie z.B. bei der Verwaltung von Active Directory Benutzern mit der Windows PowerShell gibt es nicht. Aus diesem Grund muss man etwas in die Trickkiste greifen.

Als Erstes legt man den neuen Benutzer an und gibt ihm kein Passwort (NoPassword). Ebenso soll sein Account nie ablaufen. Im gleichen Schritt leitet man die Angabe mit der Pipe weiter und konfiguriert den Benutzer so, dass sein Passwort schon abläuft (PasswordNeverExpires)

New-LocalUser -Name "Testuser2" -NoPassword -AccountNeverExpires  | Set-LocalUser -PasswordNeverExpires $false

Wenn sich jetzt der Benutzer “Testuser2” anmelden möchte, wird er sofort aufgefordert ein neues Passwort einzugeben. Ich hatte oben noch das Problem, dass der Benutzer nicht in der Gruppe Benutzer war. Sollte das der Fall sein, dann muss man ihn noch zum Mitglied in dieser Gruppe machen.

Add-LocalGroupMember -Name Benutzer -Member Testuser2

Wie ersichtlich, bietet die Windows PowerShell durchaus viele Möglichkeiten die lokalen Benutzer zu verwalten. Natürlich könnte man auch noch die cmd verwenden. Hier würde die Befehlssequenz mit net user beginnen. Übrigens für die lokale Benutzerverwaltung mit der Powershell gibt es eine Befehlsreferenz von mir. Diese könnte ihr euch auf der Seite Cheatsheets downloaden.