Schlagwort-Archive: PowerShell Framework

PowerShell ist ein plattformübergreifendes Framework und Skriptsprache von Microsoft zur Automatisierung, Konfiguration und Verwaltung von Systemen.

PowerShell Commands InvalidPasswordException

Erstellen von Benutzerkonten in der PowerShell zeigt möglicherweise den Fehler: PowerShell.Commands.InvalidPasswordException.

PowerShell Commands InvalidPasswordException

New-LocalUser : Eine Ausnahme vom Typ „Microsoft.PowerShell.Commands.InvalidPasswordException“ wurde ausgelöst.

Microsoft.PowerShell.Commands.InvalidPasswordException

Ursache: PowerShell Commands InvalidPasswordException

Die lokale Gruppenrichtlinie für Kennwort Komplexitätsvoraussetzungen entsprechen nicht der Eingabe, oder die Minimale Kennwortlänge ist nicht erfüllt.

Lösung: InvalidPasswordException

lokale Gruppenrichtlinien Minimale Kennwortlaenge

In den lokalen Gruppenrichtlinien („gpedit.msc“) die Minimale Kennwortlänge ändern, 0 für keine Minimale Kennwortlänge. Die Änderung verhindert das es zum Fehler: PowerShell InvalidPasswordException kommt.

Tipp

Erstelle mit dem folgenden PowerShell Befehl ein Benutzerkonto, mit Kennwort in derselben Befehlszeile, beispielsweise für die Script Verarbeitung.

New-LocalUser user1 -Password (ConvertTo-SecureString "8170af" -AsPlainText -Force) -FullName user1 -PasswordNeverExpires -UserMayNotChangePassword

Beschreibung

Das Cmdlet New-LocalUser erstellt ein lokales Benutzerkonto. Dieses Cmdlet erstellt ein lokales Benutzerkonto.

Das Modul Microsoft.PowerShell.LocalAccounts ist in 32-Bit-PowerShell auf einem 64-Bit-System nicht verfügbar.

Der Befehl erstellt ein lokales Benutzerkonto und gibt nicht die Parameter „AccountExpires“ oder „Password“ an. Das Konto läuft nicht ab und hat kein Passwort.

Beim erstellen von Benutzerkonten in der PowerShell kann es zum Fehler kommen: InvalidPasswordException.

Der erste Befehl verwendet das Cmdlet Read-Host, um Sie zur Eingabe eines Kennworts aufzufordern. Der Befehl speichert das Passwort als sichere Zeichenfolge in der Variablen $Password.

Der zweite Befehl erstellt ein lokales Benutzerkonto und setzt das Passwort des neuen Kontos auf die in $Password gespeicherte sichere Zeichenfolge. Der Befehl gibt einen Benutzernamen, einen vollständigen Namen und eine Beschreibung für das Benutzerkonto an.

Benutzer automatisch im Bulk in PowerShell erstellen

Benutzer automatisiert erstellen aus Datei mit PowerShell

Sollen Benutzer automatisiert aus einem Bulk erstellt werden, hilft ein kleines PowerShell Script. Hier werden aus einer Excel Tabelle die Benutzer erstellt. Die Benutzernamen stehen in der Spalte (A) und das Passwort enthält jeweils die zweite Spalte (B), die Tabelle wird exportiert und als CSV-Datei gespeichert.

Excel Tabelle mit Benutzer für die Bulk erstellung

Die Tabelle wird über Datei – Exportieren – Dateityp ändern – CSV (Trennzeichen-getrennt) (*.csv) zum Beispiel als „list.txt“ gespeichert.

Der foreach Loop liest den Inhalt der Datei „list.txt“ und schreibt den Inhalt der ersten Spalte in die Variable $user, die zweite Spalte wird zu $pass zugewiesen. Die Kommadozeilen in einer als Administrator geöffneten PowerShell ausführen, um die Benutzer als Bulk zu erstellen.

foreach ($line in Get-Content ".\list.txt") {
    $user,$pass = $line -split ';'
    New-LocalUser $user -Password (ConvertTo-SecureString $pass -AsPlainText -Force) -FullName $user
}

Die CSV-Datei „list.txt“ enthält die Benutzer im Bulk durch Semikolon getrennt das Passwort. Damit das Passwort als PlainText Format übergeben werden kann, muss das cmdlet ConvertTo-SecureString mit -AsPlainText -Force übergeben werden.

Hinweis: Um Scripts ausführbar zu machen, muss zuerst das command Set-ExecutionPolicy RemoteSigned ausgeführt werden.

Möchte man verhindern das die Benutzer das Passwort ändern können, sind nachfolgende Optionen anzugeben.

foreach ($line in Get-Content ".\list.txt") {
    $user,$pass = $line -split ';'
    New-LocalUser $user -Password (ConvertTo-SecureString $pass -AsPlainText -Force) -FullName $user -Description $user -PasswordNeverExpires -UserMayNotChangePassword
}

Das Script um Benutzer als Bulk zu erstellen wird in der PowerShell im selben Verzeichnis ausgeführt, in diesem die CSV-Datei „list.txt“ sich befindet.

PS C:\> .\adduser.ps1

Die so erstellten Benutzer sollten noch zu einer Gruppe angehören, folgender Loop fügt die Benutzer zur Gruppe „Benutzer“ hinzu.

foreach ($line in Get-Content ".\list.txt") {
    $user,$pass = $line -split ';'
    Add-LocalGroupMember -Group "Benutzer" -Member $user
}

Die Schleife kann man erneut einsetzen um die Benutzer zu entfernen.

foreach ($line in Get-Content ".\list.txt") {
    $user,$pass = $line -split ';'
	Remove-LocalUser -Name $user
}

Hinweis: Sollen die Benutzer in einer AD Domain erstellt werden, ist das cmdlet New-ADUser zuständig.

Fazit

In diesem Beitrag wird gezeigt wie Benutzer automatisiert aus einem Bulk erstellt werden können. Für die Migration und bei der Reorganisation des Active Directory Forest kann es eine nützliche Vorgehensweise sein, ohne das die Gesamtstruktur und die darin enthaltenen Benutzer Elemente einzeln erstellt und verwaltet werden müssen, was bei vielen Elemente eine erhebliche Erleichterung oder Verkürzung bis zur wieder betriebsbereiten Umgebung sein kann.