MAIN MENU
Blog di Devolutions

Annunci, aggiornamenti e approfondimenti di Devolutions.

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

Creare un modulo di reimpostazione password Active Directory self-service in PowerShell Universal

Reimposti una password Active Directory con Set-ADAccountPassword, confermi il valore in uno script o New-UDForm, chiami ResetPassword.ps1 con Invoke-PSUScript oppure trascini un Portal Widget su una pagina Portal v5.

In questo articolo vedremo come creare un modulo di reimpostazione password Active Directory self-service in PowerShell Universal. Esistono diversi modi per farlo. Esamineremo l’uso di uno script, la creazione di un modulo in un’app che chiama lo script e, infine, come farlo in PowerShell Universal v5 con i Portal Widgets.

Script di reimpostazione password Active Directory

Il primo compito da completare è usare il cmdlet Set-ADAccountPassword per reimpostare la password. Questo cmdlet è disponibile nel modulo ActiveDirectory. PowerShell Universal dovrà avere accesso ad Active Directory per eseguire questo script. Può anche configurare credenziali Run As per usare un altro account.

Lo script accetterà la password e una password di conferma per verificare che coincidano. Useremo il contesto dell’utente corrente per decidere quale account reimpostare. Usando SecureString, l’interfaccia mostra la password come campo password. Con Parameter impostiamo Mandatory in modo che l’utente fornisca i parametri obbligatori. La proprietà HelpMessage mostra una descrizione del parametro quando l’utente passa il mouse sul parametro nel modulo. La variabile $UAJob è una variabile integrata che contiene informazioni sul job corrente, inclusa l’identità dell’utente.

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

Per creare uno script in PowerShell Universal, faccia clic su Automation > Scripts e poi su Create New Script. Può quindi incollare lo script nell’editor. A quel punto può provare a eseguirlo. Verrà visualizzata una finestra di dialogo con i parametri da fornire.

PowerShell Universal run dialog showing password and confirm password parameters.
Parametri password all'esecuzione dello script di reimpostazione

Se esegue lo script con password non coincidenti, vedrà un messaggio di errore.

PowerShell Universal job error stating that the passwords do not match.
Errore di password non coincidenti nella console di amministrazione

Questo approccio ha un paio di limiti. Innanzitutto, il controllo della password avviene dopo l’invio del modulo e l’esecuzione dello script. L’utente dovrà quindi reinserire la password se non coincidono. In secondo luogo, l’utente dovrà usare la console di amministrazione per eseguire lo script. Può essere scomodo per gli utenti non tecnici. Nella sezione successiva vedremo come creare un modulo in un’app per semplificare il processo.

Modulo di reimpostazione password Active Directory in un’app Universal

Per creare un modulo in un’app, faccia clic su User Interfaces > Apps e poi su Create New App (nella versione v5 sarà sotto il nodo Apps). Una volta creata l’app, dovrà definire il modulo e chiamare Invoke-PSUScript per eseguire lo script.

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

Questo modulo mostrerà due campi password. All’invio, controllerà se le password coincidono. Se coincidono, chiamerà lo script ResetPassword.ps1. In caso contrario, mostrerà un messaggio toast.

PowerShell Universal app toast warning that the passwords do not match.
Toast di password non coincidenti nel modulo dell'app Universal

Come può vedere, il modulo è molto semplice e diretto. Può anche assegnare l’accesso basato sui ruoli all’app in modo che solo determinati utenti possano accedere al modulo. L’unico svantaggio è dover definire l’app da soli. Offre però la massima flessibilità.

Portal Widget di PowerShell Universal v5

PowerShell Universal v5 offre un Portal Widget proprio per questo scopo. Non deve scrivere codice per creare il modulo. Può trascinare il widget sulla pagina Portal e configurare alcune impostazioni.

PowerShell Universal Portal page showing a configured password reset widget.
Portal Widget di reimpostazione password in PowerShell Universal v5

Pronto a iniziare a creare? Scarichi PowerShell Universal.