In meinem Blogeintrag Zufällige (Komplexe) Kennwörter erzeugen mit Powershell vom 23.04 habe ich gezeigt, wie man komplexe Kennwörter mit Powershell generieren kann, indem man zufällige Zeichen mit Get-Random erzeugt. Aber es geht auch einfacher, denn das .NET-Framework bietet bereits eine fertige statische Methode zum generieren von Kennwörtern, die man in Powershell nur noch laden muß. Die Methode heißt GeneratePassword und befindet sich in der [System.Web]-Assembly. Die Assembly ist in Powershell allerdings nicht standardmäßig geladen. Dies kann man mit dem Cmdlet Add-Type erledigen:
Add-Type -AssemblyName System.web
Nun können Sie die Methode GeneratePassword aus der Klasse [System.Web.Security.Membership] aufrufen. Der Aufruf erfolgt über [Klasse]::Methodenname(Parameter):
[System.Web.Security.Membership]::GeneratePassword(10,3)
Die beiden Parameter 10 und 3 bestimmen die Anzahl der Zeichen sowie die nicht-Alphanumerischen Zeichen, die das Kennwort enthalten muß.
In eine Funktion gegossen sieht das dann so aus:
function New-Password {
param
(
# The Length of the Password
[ValidateRange(3,128)]
[String]$Length = 12,
# Number of non-Alpanumeric Characters
[String]$Specials = '3'
)
Add-Type -AssemblyName System.web
[System.Web.Security.Membership]::GeneratePassword($Length,$Specials)
}