In diesem Beitrag zeigen wir, wie Sie ein Active Directory Self-Service-Formular zum Zurücksetzen des Passworts in PowerShell Universal erstellen. Es gibt mehrere Wege dorthin. Wir betrachten die Verwendung eines Skripts, das Erstellen eines Formulars in einer App, das das Skript aufruft, und schließlich, wie das in PowerShell Universal v5 mit Portal Widgets geht.
Active Directory-Skript zum Zurücksetzen des Passworts
Die erste Aufgabe besteht darin, das Cmdlet Set-ADAccountPassword zu verwenden, um das Passwort zurückzusetzen. Dieses Cmdlet ist im Modul ActiveDirectory enthalten. PowerShell Universal muss Zugriff auf Active Directory haben, um dieses Skript auszuführen. Sie können auch Run As-Anmeldeinformationen einrichten, um ein anderes Konto zu verwenden.
Unser Skript nimmt das Passwort und ein Bestätigungspasswort entgegen, damit sie übereinstimmen. Wir verwenden den Kontext des aktuellen Benutzers, um festzulegen, welches Konto zurückgesetzt wird. Mit SecureString stellt die Benutzeroberfläche das Passwort als Passwortfeld dar. Über Parameter setzen wir Mandatory, damit der Benutzer die erforderlichen Parameter angibt. Die Eigenschaft HelpMessage zeigt eine Beschreibung des Parameters, wenn der Benutzer im Formular über den Parameter fährt. Die Variable $UAJob ist eine integrierte Variable mit Informationen zum aktuellen Job, einschließlich der Identität des Benutzers.
param(
[Parameter(Mandatory)]
[SecureString]$Password,
[Parameter(Mandatory, HelpMessage = "Confirm New User Password")]
[SecureString]$ConfirmPassword
)
$Password = ConvertFrom-SecureString -SecureString $Password -AsPlainText
$ConfirmPassword = ConvertFrom-SecureString -SecureString $ConfirmPassword -AsPlainText
if ($Password -ne $ConfirmPassword) {
throw 'Passwords do not match'
}
$Password = ConvertTo-SecureString $Password -AsPlainText -Force
Set-ADAccountPassword -Identity $UAJob.Identity.Name -NewPassword $Password
Um ein Skript in PowerShell Universal zu erstellen, klicken Sie auf Automation > Scripts und dann auf Create New Script. Anschließend können Sie das Skript in den Editor einfügen. Danach können Sie das Skript ausführen. Es erscheint ein Dialog mit den Parametern, die Sie angeben müssen.
Wenn Sie das Skript mit nicht übereinstimmenden Passwörtern ausführen, sehen Sie eine Fehlermeldung.
Dieser Ansatz hat ein paar Nachteile. Erstens erfolgt die Passwortprüfung, nachdem das Formular abgeschickt und das Skript ausgeführt wurde. Der Benutzer muss das Passwort also erneut eingeben, wenn die Werte nicht übereinstimmen. Zweitens muss der Benutzer die Admin-Konsole verwenden, um das Skript auszuführen. Das ist für nicht technische Benutzer etwas umständlich. Im nächsten Abschnitt erstellen wir ein Formular in einer App, um den Ablauf zu vereinfachen.
Active Directory-Formular zum Zurücksetzen des Passworts in einer Universal-App
Um ein Formular in einer App zu erstellen, klicken Sie auf User Interfaces > Apps und dann auf Create New App (in Version v5 liegt das unter dem Knoten Apps). Sobald die App erstellt ist, müssen Sie das Formular definieren und Invoke-PSUScript aufrufen, um das Skript auszuführen.
New-UDApp -Title 'Active Directory Self Service Password Reset' -Content {
New-UDForm -Content {
New-UDTextbox -Type password -Id Password -Label 'Password'
New-UDTextbox -Type password -Id ConfirmPassword -Label 'Confirm Password'
} -OnSubmit {
$Password = $EventData.Password
$ConfirmPassword = $EventData.ConfirmPassword
if ($Password -ne $ConfirmPassword) {
Show-UDToast -Message 'Passwords do not match' -Duration 4000 -Position topLeft -BackgroundColor red -MessageColor white
return
}
Invoke-PSUScript -Name 'ResetPassword.ps1' -Parameters @{
Password = $Password
ConfirmPassword = $ConfirmPassword
} -Wait
Show-UDToast -Message 'Password Reset' -Duration 4000 -Position topLeft -BackgroundColor green -MessageColor white
}
}
Dieses Formular zeigt zwei Passwortfelder. Beim Absenden prüft es, ob die Passwörter übereinstimmen. Wenn ja, ruft es das Skript ResetPassword.ps1 auf. Wenn nicht, zeigt es eine Toast-Meldung.
Wie Sie sehen, ist das Formular sehr einfach und direkt. Sie können der App außerdem rollenbasierten Zugriff zuweisen, damit nur bestimmte Benutzer das Formular nutzen. Der Nachteil ist, dass Sie die App selbst definieren müssen. Das bietet jedoch die größte Flexibilität.
PowerShell Universal v5 Portal Widget
PowerShell Universal v5 stellt genau dafür ein Portal Widget bereit. Sie müssen keinen Code schreiben, um das Formular zu erstellen. Sie ziehen das Widget einfach auf die Portal-Seite und konfigurieren einige Einstellungen.
Bereit zum Bauen? PowerShell Universal herunterladen.

Adam Driscoll