Hovedmenu
Devolutions-blog

Nyheder, opdateringer og indsigter fra Devolutions.

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

Opret en selvbetjeningsformular til nulstilling af Active Directory-adgangskoder i PowerShell Universal

Nulstil en Active Directory-adgangskode med Set-ADAccountPassword, bekræft værdien i et script eller New-UDForm, kald ResetPassword.ps1 med Invoke-PSUScript, eller slip en Portal Widget ind på en Portal-side i v5.

I det her indlæg gennemgår vi, hvordan du opretter en selvbetjeningsformular til nulstilling af Active Directory-adgangskoder i PowerShell Universal. Der er flere måder at gøre det på. Vi ser på at bruge et script, på at oprette en formular i en app og kalde scriptet, og til sidst på, hvordan du gør det i PowerShell Universal v5 med Portal Widgets.

Script til nulstilling af Active Directory-adgangskoder

Den første opgave er at bruge cmdlet’en Set-ADAccountPassword til at nulstille adgangskoden. Cmdlet’en findes i modulet ActiveDirectory. PowerShell Universal skal have adgang til Active Directory for at kunne køre scriptet. Du kan også konfigurere Run As-legitimationsoplysninger, så der bruges en anden konto.

Scriptet tager imod adgangskoden og en bekræftelse, så vi sikrer, at de stemmer overens. Vi bruger den aktuelle brugers kontekst til at afgøre, hvilken konto der skal nulstilles. Ved at bruge SecureString sørger vi for, at brugerfladen viser adgangskoden som et adgangskodefelt. Med Parameter kan vi sætte Mandatory, så brugeren angiver de påkrævede parametre. Egenskaben HelpMessage giver en beskrivelse af parameteren, når brugeren holder markøren over parameteren i formularen. Variablen $UAJob er en indbygget variabel, der indeholder oplysninger om det aktuelle job, herunder brugerens identitet.

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

For at oprette et script i PowerShell Universal skal du klikke på Automation > Scripts og derefter på Create New Script. Så kan du indsætte scriptet i editoren. Når du har gjort det, kan du prøve at køre scriptet. Det viser en dialog med de parametre, du skal angive.

Kørselsdialog i PowerShell Universal med parametrene for adgangskode og bekræftelse af adgangskode.
Adgangskodeparametre, når nulstillingsscriptet køres

Hvis du kører scriptet med adgangskoder, der ikke stemmer overens, ser du en fejlmeddelelse.

Jobfejl i PowerShell Universal om, at adgangskoderne ikke stemmer overens.
Fejl ved adgangskoder, der ikke stemmer overens, i administrationskonsollen

Der er et par ulemper ved den her fremgangsmåde. For det første sker kontrollen af adgangskoden, efter at formularen er sendt, og scriptet er kørt. Det betyder, at brugeren skal indtaste adgangskoden igen, hvis de ikke stemmer overens. For det andet skal brugeren bruge administrationskonsollen til at køre scriptet. Det kan være lidt besværligt for brugere, der ikke er tekniske. I næste afsnit ser vi på, hvordan du opretter en formular i en app, så processen bliver nemmere.

Formular til nulstilling af Active Directory-adgangskoder i en Universal-app

For at oprette en formular i en app skal du klikke på User Interfaces > Apps og derefter på Create New App (i version v5 ligger det under noden Apps). Når appen er oprettet, skal du definere formularen og kalde Invoke-PSUScript for at køre scriptet.

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
    }
}

Formularen viser to adgangskodefelter. Når formularen sendes, kontrollerer den, om adgangskoderne stemmer overens. Hvis de gør, kalder den scriptet ResetPassword.ps1. Hvis de ikke gør, viser den en toastbesked.

Toastadvarsel i en PowerShell Universal-app om, at adgangskoderne ikke stemmer overens.
Toastbesked om adgangskoder, der ikke stemmer overens, i Universal-appens formular

Som du kan se, er formularen meget enkel og ligetil. Du kan også tildele rollebaseret adgang til appen, så kun bestemte brugere kan åbne formularen. Den ene ulempe er, at du selv skal definere appen. Til gengæld giver det mest fleksibilitet.

Portal Widget i PowerShell Universal v5

PowerShell Universal v5 har en Portal Widget netop til det her formål. Du behøver ikke skrive kode for at oprette formularen. Du trækker blot widgeten over på Portal-siden og konfigurerer nogle indstillinger.

Portal-side i PowerShell Universal med en konfigureret widget til nulstilling af adgangskode.
Portal Widget til nulstilling af adgangskode i PowerShell Universal v5

Klar til at bygge? Hent PowerShell Universal.