En esta entrada veremos cómo crear un formulario de restablecimiento de contraseña de Active Directory de autoservicio en PowerShell Universal. Hay varias formas de conseguirlo. Veremos el uso de un script, la creación de un formulario en una app que llama al script y, por último, cómo hacerlo en PowerShell Universal v5 con Portal Widgets.
Script de restablecimiento de contraseña de Active Directory
La primera tarea que debemos completar es usar el cmdlet Set-ADAccountPassword para restablecer la contraseña. Este cmdlet está disponible en el módulo ActiveDirectory. PowerShell Universal necesitará acceso a Active Directory para ejecutar este script. También puede configurar credenciales Run As para usar otra cuenta.
Nuestro script aceptará la contraseña y una contraseña de confirmación para comprobar que coinciden. Usaremos el contexto del usuario actual para decidir qué cuenta restablecer. Al usar SecureString, la interfaz mostrará la contraseña como un campo de contraseña. Con Parameter podemos definir Mandatory para que el usuario proporcione los parámetros obligatorios. La propiedad HelpMessage mostrará una descripción del parámetro cuando el usuario sitúe el cursor sobre el parámetro en el formulario. La variable $UAJob es una variable integrada que contiene información sobre el trabajo actual, incluida la identidad del usuario.
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
Para crear un script en PowerShell Universal, pulse Automation > Scripts y luego Create New Script. A continuación puede pegar el script en el editor. Una vez hecho, puede intentar ejecutar el script. Se mostrará un diálogo con los parámetros que debe proporcionar.
Si ejecuta el script con contraseñas que no coinciden, verá un mensaje de error.
Este enfoque tiene un par de inconvenientes. En primer lugar, la comprobación de la contraseña se produce después de enviar el formulario y de ejecutar el script. Eso significa que el usuario tendrá que volver a introducir la contraseña si no coinciden. En segundo lugar, el usuario deberá usar la consola de administración para ejecutar el script. Esto puede resultar engorroso para usuarios no técnicos. En la sección siguiente veremos cómo crear un formulario en una app para facilitar el proceso.
Formulario de restablecimiento de contraseña de Active Directory en una app Universal
Para crear un formulario en una app, pulse User Interfaces > Apps y luego Create New App (en la versión v5 estará bajo el nodo Apps). Una vez creada la app, deberá definir el formulario y llamar a Invoke-PSUScript para ejecutar el 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
}
}
Este formulario mostrará dos campos de contraseña. Al enviarlo, comprobará si las contraseñas coinciden. Si coinciden, llamará al script ResetPassword.ps1. Si no, mostrará un mensaje toast.
Como puede ver, el formulario es muy simple y directo. También puede asignar acceso basado en roles a la app para que solo determinados usuarios puedan acceder al formulario. El inconveniente es tener que definir la app usted mismo. No obstante, es lo que ofrece más flexibilidad.
Portal Widget de PowerShell Universal v5
PowerShell Universal v5 ofrece un Portal Widget precisamente para este fin. No necesita escribir código para crear el formulario. Puede arrastrar y soltar el widget en la página Portal y configurar algunos ajustes.
¿Listo para crear? Descargue PowerShell Universal.

Adam Driscoll