Magic Quadrant™ para gerenciamento de acesso privilegiado 2025: Netwrix reconhecida pelo quarto ano consecutivo. Baixe o relatório.

Plataforma
Centro de recursosBlog
Como criar, alterar e testar senhas usando PowerShell

Como criar, alterar e testar senhas usando PowerShell

Oct 16, 2018

A automação é a chave para otimizar as tarefas de gerenciamento do Active Directory. Neste artigo, vou mostrar como criar, alterar e testar senhas de usuários com scripts de PowerShell.

Instalando o módulo AD PowerShell

Antes de poder usar o PowerShell para gerenciar o Active Directory, você precisa instalar o módulo do PowerShell do Active Directory. Se estiver usando o Windows 10 para gerenciar o AD, instale primeiro as Ferramentas de Administração de Servidor Remoto (RSAT).

Windows 10 Versão 1809

Se você está usando a versão 1809 do Windows 10, o RSAT está incluído como um Recurso Sob Demanda, então você não precisa baixar o pacote RSAT. Para habilitar o RSAT na versão 1809 do Windows 10, execute o seguinte comando em um console PowerShell elevado:

      Add-WindowsCapability -Online -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0
      

Versões anteriores do Windows 10

Se você está usando uma versão anterior do Windows 10, baixe o pacote RSAT apropriado do site da Microsoft:

  • Se você está gerenciando a versão 1803 ou 1709 do Windows Server, baixe e instale o pacote WS_1803.
  • Se você está gerenciando o Windows Server 2016 ou versões anteriores do Windows Server, baixe e instale o pacote WS2016.

Uma vez instalado o RSAT, inicie o console do PowerShell como um administrador local e habilite o módulo do AD PowerShell usando este comando do PowerShell:

      Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell
      

Criar credencial com senha usando PowerShell

Para criar uma nova conta de usuário, use o cmdlet New-ADUser. No exemplo abaixo, eu codifiquei o domínio ad.contoso.com na variável $UPN. Você deve alterar isso para corresponder ao sufixo UPN que deseja atribuir aos usuários.

Forneça o primeiro nome e o sobrenome do usuário. O UPN e o SamAccountName serão então criados adicionando um ponto entre o primeiro e o último nome. Use o seguinte script 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
      

Criar nova senha de usuário AD usando PowerShell

O código a seguir irá solicitar que você especifique um nome de usuário e senha. Você deve inserir um nome de usuário que já exista no AD e uma senha que atenda aos requisitos de complexidade de senha do domínio.

      $User = (Read-Host -Prompt "Username")
$NewPassword = (Read-Host -Prompt "New Password" -AsSecureString)
Set-ADAccountPassword -Identity $User -NewPassword $NewPassword -Reset
      

Alterar senha usando PowerShell

  • Alterar a senha de um usuário local

Para alterar a senha de um usuário local, você precisa usar os cmdlets Get-LocalUser e Set-LocalUser:

      $Password = (Read-Host -Prompt "New Password" -AsSecureString)
$User = (Read-Host -Prompt "Username")
$UserAccount = Get-LocalUser -Name $User
$UserAccount | Set-LocalUser -Password $Password
      
  • Alterar a senha de um usuário do AD

Para criar uma nova senha de usuário AD usando PowerShell, utilize o seguinte script. Será solicitado que você especifique o nome de usuário de uma conta AD existente e, em seguida, uma nova senha, que deve atender aos requisitos de complexidade de senha do domínio.

      $User = (Read-Host -Prompt "Username")
$NewPassword = (Read-Host -Prompt "New Password" -AsSecureString)
Set-ADAccountPassword -Identity $User -NewPassword $NewPassword -Reset
      
  • Obrigar um usuário a alterar sua senha no próximo login

O cmdlet Set-LocalUser não suporta a configuração de uma conta de usuário local para forçar a alteração de senha no próximo logon. No entanto, você pode alcançar o mesmo objetivo forçando a senha a expirar:

      $User = (Read-Host -Prompt "Username")
$Usrstring = "WinNT://localhost/"+$User  
$usr=[ADSI] $Usrstring  
$usr.passwordExpired = 1  
$usr.setinfo()
      

Mas você pode obrigar os usuários a mudarem as senhas de suas contas AD usando Set-ADAccountPassword:

      $User = (Read-Host -Prompt "Username")
Set-Aduser -Identity $User -ChangePasswordAtLogon $true
      
  • Alterar uma senha de administrador

Para alterar a senha do administrador do AD, digite administrator quando for solicitado um nome de usuário usando o código abaixo:

      $User = (Read-Host -Prompt "Username")
$NewPassword = (Read-Host -Prompt "New Password" -AsSecureString)
Set-ADAccountPassword -Identity $User -NewPassword $NewPassword -Reset
      

Para alterar a senha de um administrador local, digite administrator quando solicitado por um nome de usuário:

      $Password = (Read-Host -Prompt "New Password" -AsSecureString)
$User = (Read-Host -Prompt "Username")
$UserAccount = Get-LocalUser -Name $User
$UserAccount | Set-LocalUser -Password $Password
      
  • Altere o atributo “password never expires”

Para definir o atributo “password never expires” em uma conta de usuário local, use Set-LocalUser:

      $User = (Read-Host -Prompt "Username")
Set-LocalUser -Name $User -PasswordNeverExpires $true
      

Para definir o atributo “senha nunca expira” em uma conta de usuário do Active Directory, use Set-ADUser:

      $User = (Read-Host -Prompt "Username")
Set-ADUser -Identity $User -PasswordNeverExpires $true
      
  • Altere a senha da conta de serviço

Para alterar as propriedades de logon de um serviço, utilize os cmdlets Get-Credential e Set-Service. O código a seguir altera o serviço AppReadiness de usar a conta do Sistema Local para usar o nome de usuário e senha que são inseridos quando solicitado. Observe que o parâmetro Set-Service -Credential é suportado apenas no PowerShell 6 e posteriores.

      $credential = Get-Credential
Set-Service -Name "AppReadiness" -Credential $credential
      
  • Alterar a data de expiração de uma senha no Active Directory

Se você precisa estender o tempo que um usuário pode manter sua senha atual, defina o atributo pwsLastSet para a data atual, concedendo-lhes tempo extra até que o Active Directory os obrigue a alterar sua senha. Limpar o atributo e, em seguida, definir para -1 irá configurá-lo para a data e hora atuais.

      $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
      
  • Redefinição de senha em massa

A melhor maneira de fazer os usuários mudarem suas senhas do AD é forçar uma redefinição de senha. Você pode fazer isso em massa combinando os cmdlets Get-ADUser e Set-ADUser. O comando abaixo usa um filtro para obter usuários na unidade organizacional (OU) “Accounts” e encaminha os resultados para o cmdlet Set-ADUser para forçar todos os usuários na OU a mudarem sua senha no próximo login.

      Get-ADUser -Filter * -SearchScope Subtree -SearchBase "OU=Accounts,DC=ad,DC=contoso,DC=com" | 
Set-ADUser -ChangePasswordAtLogon $true
      

Testando as credenciais de um usuário

Se você quer testar se as credenciais de um usuário estão funcionando, tudo o que precisa fazer é iniciar um processo utilizando o nome de usuário e senha dele. O código abaixo inicia o cmd.exe usando as credenciais inseridas quando solicitado.

      Start-Process -FilePath cmd.exe /c -Credential (Get-Credential)
      

Compartilhar em

Saiba Mais

Sobre o autor

Asset Not Found

Russell Smith

Consultor de TI

Consultor de TI e autor especializado em tecnologias de gestão e segurança. Russell tem mais de 15 anos de experiência em TI, escreveu um livro sobre segurança do Windows e coautorou um texto para a série Microsoft’s Official Academic Course (MOAC).