La capacidad de gestionar el acceso y las credenciales de los usuarios es un componente esencial de la administración de TI. Tanto si se trata de una gran organización con necesidades informáticas complejas como de una empresa más pequeña con requisitos sencillos, una tarea común es la gestión de contraseñas. El script proporcionado muestra un método para restablecer contraseñas de usuario mediante PowerShell, ya sea para usuarios locales de Windows o dentro de un entorno de Active Directory.
Antecedentes
El script para restablecer contraseñas de usuario está diseñado principalmente para ofrecer a los profesionales de TI y a los proveedores de servicios gestionados (MSP) un método simplificado para restablecer las contraseñas de los usuarios sin tener que sumergirse en las interfaces de usuario del sistema. Con un número cada vez mayor de usuarios y la exigencia constante de aplicar prácticas de seguridad, disponer de una herramienta que realice estas operaciones de forma rápida y fiable tiene un valor incalculable. Este script, especialmente cuando se combina con herramientas como NinjaOne, ofrece automatización y eficiencia para estas tareas.
El script para restablecer contraseñas de usuario
#Requires -Version 5.1 <# .SYNOPSIS Resets a users password. .DESCRIPTION Resets a users password. Either a local user that this script runs on, or in Active directory. .EXAMPLE -UserName "Fred" -Password "Somepass1" Resets Fred's password to Somepass1 . .EXAMPLE -UserName "Fred" -Password "Somepass1" -IsDomainUser Resets Fred's password to Somepass1 in Active Directory. .EXAMPLE PS C:> .Reset-User-Password.ps1 -UserName "Fred" -Password "Somepass1" -IsDomainUser Resets Fred's password to Somepass1 in Active Directory. .OUTPUTS None .NOTES Minimum OS Architecture Supported: Windows 10, Windows Server 2012 The RSAT feature for Active Directory needs to be installed on the computer this runs on. Release Notes: Initial Release By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use. Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA). .COMPONENT ManageUsers #> [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [String] $UserName, [Parameter(Mandatory = $true)] [String] $Password, [Switch] $IsDomainUser ) begin { function Test-IsElevated { $id = [System.Security.Principal.WindowsIdentity]::GetCurrent() $p = New-Object System.Security.Principal.WindowsPrincipal($id) if ($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)) { Write-Output $true } else { Write-Output $false } } } process { if (-not (Test-IsElevated)) { Write-Error -Message "Access Denied. Please run with Administrator privileges." exit 1 } if ($IsDomainUser) { # Active Directory # Check if the ActiveDirectory module is installed if ((Get-Module -Name ActiveDirectory -ListAvailable -ErrorAction SilentlyContinue)) { try { # Try to import the ActiveDirectory module Import-Module -Name ActiveDirectory } catch { Write-Error -Message "Ninja Agent could not access AD, either RSAT was not installed or that the agent does not have permissions to add and remove users from groups." exit 5 # Access Denied exit code } try { $User = Get-ADUser -Identity $UserName Set-ADAccountPassword -Identity $User -Reset -NewPassword $(ConvertTo-SecureString -String $Password -AsPlainText -Force) Write-Host "Reset Password for user: $UserName" exit 0 } catch { Write-Host "Failed to Reset Password for user: $UserName" exit 1 } } else { Write-Host "User ($UserName) does not exist." exit 1 } } else { $User = Get-LocalUser -Name $UserName -ErrorAction SilentlyContinue if ($User) { try { Set-LocalUser -Name $UserName -Password $(ConvertTo-SecureString -String $Password -AsPlainText -Force) -Confirm:$false Write-Host "Reset Password for user: $UserName" exit 0 } catch { Write-Host "Failed to Reset Password for user: $UserName" exit 1 } } else { Write-Host "User ($UserName) does not exist." exit 1 } } } end {}
Accede a más de 300 scripts en el Dojo de NinjaOne
Análisis detallado
Parámetros: el script para restablecer contraseñas de usuario comienza definiendo los parámetros necesarios, UserName y Password. También existe un modificador opcional para IsDomainUser que, cuando se utiliza, especifica que la operación está destinada a un usuario de Active Directory.
Inicialización
Antes de restablecer las contraseñas de los usuarios, el script para restablecer contraseñas de usuario comprueba si se está ejecutando con privilegios de administrador. Esto se hace utilizando la función Test-IsElevated que comprueba el rol de ejecución actual del script.
Proceso
Dependiendo del valor del modificador IsDomainUser, el script procede con dos operaciones distintas:
- Active Directory: si el parámetro IsDomainUser está activado, el script comprueba la presencia del módulo ActiveDirectory, lo importa e intenta restablecer la contraseña del usuario en Active Directory.
- Usuario local: sin el modificador IsDomainUser, el script se dirige a un usuario local, comprobando su existencia e intentando restablecer la contraseña.
Posibles casos de uso
Imagina a un administrador de TI, Juan, que gestiona la infraestructura de red de una empresa mediana. Ha recibido múltiples solicitudes de empleados que han olvidado sus contraseñas. En lugar de restablecerlos manualmente a través de la GUI, Juan utiliza este script. Con una sola orden, ahora puede restablecer la contraseña de cada usuario, lo que le ahorra tiempo y garantiza un enfoque coherente.
Comparaciones
Tradicionalmente, el restablecimiento de contraseñas en Windows o Active Directory requería herramientas basadas en GUI como “Administración de equipos” para usuarios locales o “Usuarios y equipos de Active Directory” para usuarios de AD. Aunque estas herramientas son sólidas y tienen muchas funciones, a menudo implican múltiples pasos. Este script de PowerShell para restablecer contraseñas de usuario ofrece un enfoque de línea de comandos más simplificado que puede integrarse fácilmente en los flujos de trabajo de automatización.
FAQ
- ¿Se requieren privilegios de administrador?
Sí, el script debe ejecutarse con privilegios de administrador. - ¿Este script puede gestionar tanto usuarios locales como de AD?
Sí, utilizando el modificador IsDomainUser, el script puede dirigirse a usuarios de AD.
Implicaciones
Aunque el script proporciona eficacia, también conlleva el peso de la seguridad. Un uso indebido puede provocar accesos no deseados o bloqueos de cuentas. Asegúrate siempre de que las contraseñas se restablezcan de forma responsable y con el conocimiento del usuario.
Recomendaciones
- Haz siempre una copia de seguridad antes de realizar cambios a gran escala.
- Prueba el script en un entorno controlado antes de utilizarlo en producción.
- Utiliza contraseñas fuertes y únicas al restablecerlas.
Reflexiones finales
Para los profesionales de TI que buscan una mayor automatización y simplicidad en las operaciones, herramientas como NinjaOne pueden complementar este script para restablecer contraseñas de usuario. NinjaOne ofrece sólidas soluciones de gestión de TI que se integran bien con scripts personalizados como éste, lo que permite a los profesionales sacar el máximo partido de su infraestructura. Garantizar que los usuarios puedan acceder de forma segura a sus cuentas es fundamental en la gestión de TI. Gracias a PowerShell y herramientas como NinjaOne, se pueden reducir las complejidades de tareas como el restablecimiento de contraseñas, lo que permite a los equipos de TI centrarse en cuestiones más urgentes.