Cómo crear, cambiar y probar contraseñas usando PowerShell
Oct 16, 2018
La automatización es la clave para agilizar las tareas de gestión de Active Directory. En este artículo, te mostraré cómo crear, cambiar y probar contraseñas de usuario con scripts de PowerShell.
Instalando el módulo de PowerShell de AD
Antes de poder usar PowerShell para administrar Active Directory, necesitas instalar el módulo de PowerShell de Active Directory. Si estás utilizando Windows 10 para administrar AD, primero instala las Herramientas de administración remota del servidor (RSAT).
Windows 10 Versión 1809
Si estás utilizando la versión 1809 de Windows 10, RSAT está incluido como una Característica bajo Demanda, por lo que no necesitas descargar el paquete RSAT. Para habilitar RSAT en la versión 1809 de Windows 10, ejecuta el siguiente comando en una consola de PowerShell elevada:
Add-WindowsCapability -Online -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0
Versiones anteriores de Windows 10
Si está utilizando una versión anterior de Windows 10, descargue el paquete RSAT apropiado desde el sitio web de Microsoft:
- Si está administrando la versión 1803 o 1709 de Windows Server, descargue e instale el paquete WS_1803.
- Si está administrando Windows Server 2016 o versiones anteriores de Windows Server, descargue e instale el paquete WS2016.
Una vez instalado RSAT, inicie la consola de PowerShell como administrador local y habilite el módulo de PowerShell de AD utilizando este comando de PowerShell:
Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell
Crear credencial con contraseña usando PowerShell
Para crear una nueva cuenta de usuario, utilice el cmdlet New-ADUser. En el ejemplo a continuación, he codificado de manera fija el dominio ad.contoso.com en la variable $UPN. Debería cambiar esto para que coincida con el sufijo UPN que desea asignar a los usuarios.
Proporcione el nombre y apellido del usuario. El UPN y SamAccountName se crearán añadiendo un punto entre el nombre y el apellido. Utilice el siguiente script de PowerShell:
$GivenName = (Read-Host -Prompt "First Name")
$Surname = (Read-Host -Prompt "Last Name")
$User = $GivenName+"."+$Surname
$UPN = $User+"@ad.contoso.com"
$Password = (Read-Host -Prompt "Password" -AsSecureString)
New-ADUser -Name $User -SamAccountName $User -UserPrincipalName $UPN -AccountPassword $Password -GivenName $GivenName -Surname $Surname -Enabled $True
Crear una nueva contraseña de usuario de AD usando PowerShell
El siguiente código le solicitará que especifique un nombre de usuario y una contraseña. Debe ingresar un nombre de usuario que ya exista en AD y una contraseña que cumpla con los requisitos de complejidad de contraseña del dominio.
$User = (Read-Host -Prompt "Username")
$NewPassword = (Read-Host -Prompt "New Password" -AsSecureString)
Set-ADAccountPassword -Identity $User -NewPassword $NewPassword -Reset
Cambiar la contraseña utilizando PowerShell
- Cambiar la contraseña de un usuario local
Para cambiar la contraseña de un usuario local, necesita utilizar los cmdlets Get-LocalUser y Set-LocalUser:
$Password = (Read-Host -Prompt "New Password" -AsSecureString)
$User = (Read-Host -Prompt "Username")
$UserAccount = Get-LocalUser -Name $User
$UserAccount | Set-LocalUser -Password $Password
- Cambiar la contraseña de un usuario de AD
Para crear una nueva contraseña de usuario de AD usando PowerShell, utilice el siguiente script. Se le solicitará que especifique el nombre de usuario de una cuenta de AD existente y luego una nueva contraseña, que debe cumplir con los requisitos de complejidad de contraseña del dominio.
$User = (Read-Host -Prompt "Username")
$NewPassword = (Read-Host -Prompt "New Password" -AsSecureString)
Set-ADAccountPassword -Identity $User -NewPassword $NewPassword -Reset
- Obligar a un usuario a cambiar su contraseña en el próximo inicio de sesión
El cmdlet Set-LocalUser no admite configurar una cuenta de usuario local para forzar un cambio de contraseña en el próximo inicio de sesión. Sin embargo, puedes lograr el mismo objetivo forzando la expiración de la contraseña:
$User = (Read-Host -Prompt "Username")
$Usrstring = "WinNT://localhost/"+$User
$usr=[ADSI] $Usrstring
$usr.passwordExpired = 1
$usr.setinfo()
Pero puede obligar a los usuarios a cambiar las contraseñas de sus cuentas de AD utilizando Set-ADAccountPassword:
$User = (Read-Host -Prompt "Username")
Set-Aduser -Identity $User -ChangePasswordAtLogon $true
- Cambiar una contraseña de administrador
Para cambiar la contraseña del administrador de AD, escriba administrator cuando se le solicite un nombre de usuario utilizando el código a continuación:
$User = (Read-Host -Prompt "Username")
$NewPassword = (Read-Host -Prompt "New Password" -AsSecureString)
Set-ADAccountPassword -Identity $User -NewPassword $NewPassword -Reset
Para cambiar una contraseña de administrador local, escriba administrator cuando se le solicite un nombre de usuario:
$Password = (Read-Host -Prompt "New Password" -AsSecureString)
$User = (Read-Host -Prompt "Username")
$UserAccount = Get-LocalUser -Name $User
$UserAccount | Set-LocalUser -Password $Password
- Cambie el atributo “password never expires”
Para configurar el atributo “password never expires” en una cuenta de usuario local, utilice Set-LocalUser:
$User = (Read-Host -Prompt "Username")
Set-LocalUser -Name $User -PasswordNeverExpires $true
Para establecer el atributo “la contraseña nunca expira” en una cuenta de usuario de Active Directory, utilice Set-ADUser:
$User = (Read-Host -Prompt "Username")
Set-ADUser -Identity $User -PasswordNeverExpires $true
- Cambie la contraseña de la cuenta de servicio
Para cambiar las propiedades de inicio de sesión de un servicio, utilice los cmdlets Get-Credential y Set-Service. El siguiente código cambia el servicio AppReadiness de usar la cuenta del Sistema Local a usar el nombre de usuario y la contraseña que se ingresan al ser solicitados. Tenga en cuenta que el parámetro Set-Service -Credential solo es compatible con PowerShell 6 y versiones posteriores.
$credential = Get-Credential
Set-Service -Name "AppReadiness" -Credential $credential
- Cambie la fecha de vencimiento de una contraseña en Active Directory
Si necesita extender el tiempo que un usuario puede mantener su contraseña actual, establezca el atributo pwsLastSet en la fecha actual, dándoles tiempo adicional hasta que Active Directory les obligue a cambiar su contraseña. Si borra el atributo y luego lo establece en -1, se configurará en la fecha y hora actuales.
$Username = (Read-Host -Prompt "Username")
$User = Get-ADUser $Username -Properties pwdlastset
$User.pwdlastset = 0
Set-ADUser -Instance $User
$User.pwdlastset = -1
Set-ADUser -Instance $User
- Restablecimiento masivo de contraseñas
La mejor manera de conseguir que los usuarios cambien sus contraseñas de AD es forzar un restablecimiento de contraseña. Puedes hacer esto en masa combinando los cmdlets Get-ADUser y Set-ADUser. El comando a continuación utiliza un filtro para obtener usuarios en la unidad organizativa (OU) “Accounts” y canaliza los resultados al cmdlet Set-ADUser para forzar a todos los usuarios en la OU a cambiar su contraseña en el próximo inicio de sesión.
Get-ADUser -Filter * -SearchScope Subtree -SearchBase "OU=Accounts,DC=ad,DC=contoso,DC=com" |
Set-ADUser -ChangePasswordAtLogon $true
Probando las credenciales de un usuario
Si quieres probar si las credenciales de un usuario funcionan, todo lo que necesitas hacer es iniciar un proceso utilizando su nombre de usuario y contraseña. El código a continuación inicia cmd.exe usando las credenciales ingresadas cuando se solicitan.
Start-Process -FilePath cmd.exe /c -Credential (Get-Credential)
Compartir en
Aprende más
Acerca del autor
Russell Smith
Consultor de TI
Consultor de TI y autor especializado en tecnologías de gestión y seguridad. Russell tiene más de 15 años de experiencia en TI, ha escrito un libro sobre seguridad en Windows y ha coescrito un texto para la serie de Cursos Académicos Oficiales de Microsoft (MOAC).
Aprende más sobre este tema
Gestión de configuración para el control seguro de Endpoint
Leyes de Privacidad de Datos por Estado: Diferentes Enfoques para la Protección de la Privacidad
Ejemplo de Análisis de Riesgos: Cómo Evaluar los Riesgos
El Triángulo de la CIA y su Aplicación en el Mundo Real
¿Qué es la gestión de registros electrónicos?