<# .SYNOPSIS Erstellt ein Passwort für einen Active Directory-Benutzer basierend auf Vor- und Nachname. .DESCRIPTION Die Funktion generiert ein zufälliges Passwort im Format "##**##". Der Code besteht aus: - Erster Buchstabe des Vornamens (groß) + letzter Buchstabe des Vornamens (klein) - Erster Buchstabe des Nachnamens (groß) + letzter Buchstabe des Nachnamens (klein) - Länge des Vornamens (maximal 9) - Länge des Nachnamens (maximal 9) Umlaute und Sonderzeichen werden ersetzt. .PARAMETER Vorname Der Vorname des Benutzers .PARAMETER Nachname Der Nachname des Benutzers .PARAMETER user Der SamAccountName des Active Directory-Benutzers .PARAMETER ChangePasswordAtLogon Gibt an, ob das Passwort bei der nächsten Anmeldung geändert werden muss ($true/$false) .EXAMPLE creatpw -Vorname "Müller" -Nachname "Becker" -user "mbecker" -ChangePasswordAtLogon $true #> function creatpw { param( [string]$Vorname, [string]$Nachname, [string]$user, [bool]$ChangePasswordAtLogon ) # Umlaute und Sonderzeichen ersetzen $Vorname = $Vorname.Replace('ö', 'oe').Replace('ä', 'ae').Replace('ü', 'ue').Replace('ß', 'ss').Replace('Ö', 'Oe').Replace('Ü', 'Ue').Replace('Ä', 'Ae') $Nachname = $Nachname.Replace('ö', 'oe').Replace('ä', 'ae').Replace('ü', 'ue').Replace('ß', 'ss').Replace('Ö', 'Oe').Replace('Ü', 'Ue').Replace('Ä', 'Ae') # Namen in Großbuchstaben konvertieren $Vorname = $Vorname.ToUpper() $Nachname = $Nachname.ToUpper() # Kleinbuchstaben-Versionen für Codegenerierung $VornameK = $Vorname.ToLower() $NachnameK = $Nachname.ToLower() # Code generieren: erster Buchstabe groß, letzter Buchstabe klein $CodeVorname = $Vorname[0] + $VornameK[-1] $CodeNachname = $Nachname[0] + $NachnameK[-1] # Namenslänge bestimmen und auf maximal 9 Zeichen begrenzen $Vornameanzahl = $Vorname.Length $Nachnameanzahl = $Nachname.Length if ($Vornameanzahl -ge 9) { $Vornameanzahl = 9 } if ($Nachnameanzahl -ge 9) { $Nachnameanzahl = 9 } # Finale Passwort-Zusammensetzung $Codename = "##*" + $CodeVorname + $CodeNachname + $Vornameanzahl + $Nachnameanzahl + "*##" # Passwort im Active Directory setzen und Benutzer aktivieren Set-ADAccountPassword -Identity $user -NewPassword (ConvertTo-SecureString -AsPlainText $Codename -Force) -Reset Enable-ADAccount -Identity $user # Festlegen, ob das Passwort bei der nächsten Anmeldung geändert werden muss Set-ADUser -Identity $user -ChangePasswordAtLogon:$ChangePasswordAtLogon # Ausgabe des generierten Passworts und Kopieren in die Zwischenablage Write-Host "$user - $Vorname - $Nachname : $Codename ( Kennwort ist im Zwischenspeicher. )" Set-Clipboard $Codename }