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.
Hvis du kører scriptet med adgangskoder, der ikke stemmer overens, ser du en fejlmeddelelse.
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.
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.
Klar til at bygge? Hent PowerShell Universal.

Adam Driscoll