MAIN MENU
Devolutions Blog

Ankündigungen, Aktualisierungen und Einsichten von Devolutions

Devolutions PowerShell Universal Active Directory password reset illustration for the blog.

Ein Active Directory Self-Service-Formular zum Zurücksetzen des Passworts in PowerShell Universal erstellen

Setzen Sie ein Active Directory-Passwort mit Set-ADAccountPassword zurück, bestätigen Sie den Wert in einem Skript oder New-UDForm, rufen Sie ResetPassword.ps1 mit Invoke-PSUScript auf oder ziehen Sie ein Portal Widget auf eine v5-Portal-Seite.

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.

PowerShell Universal run dialog showing password and confirm password parameters.
Passwortparameter beim Ausführen des Reset-Skripts

Wenn Sie das Skript mit nicht übereinstimmenden Passwörtern ausführen, sehen Sie eine Fehlermeldung.

PowerShell Universal job error stating that the passwords do not match.
Fehler bei nicht übereinstimmenden Passwörtern in der Admin-Konsole

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.

PowerShell Universal app toast warning that the passwords do not match.
Toast bei nicht übereinstimmenden Passwörtern im Universal-App-Formular

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.

PowerShell Universal Portal page showing a configured password reset widget.
Portal Widget zum Zurücksetzen des Passworts in PowerShell Universal v5

Bereit zum Bauen? PowerShell Universal herunterladen.