Magic Quadrant™ para la gestión de acceso privilegiado 2025: Netwrix reconocida por cuarto año consecutivo. Descarga el informe.

Plataforma
Centro de recursosBlog
Cómo crear, cambiar y probar contraseñas usando PowerShell

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

Asset Not Found

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).