Veja como “zerar” o período restante para alterar uma senha no AD, para isso iremos definir que a data da última alteração de senha é para “agora”.
Basicamente iremos alterar o atributo pwdLastSet de uma conta para 0 e depois para -1 (não conseguimos definir como -1 direto), com isso a data será a data atual.
O comando é simples, o código ficará um pouco maior apenas para deixá-lo mais “elegante”. Para criar o script, crie um arquivo .ps1 e coloque o seguinte conteúdo:
Import-Module ActiveDirectory
cls
write-host ""
write-host "Zerador de data de senha"
write-host "------------------------"
$Email = Read-Host "Informe o login@dominio"
$User = $null
$domain = $null
$User = $Email.Split('@')[0]
$Domain = $Email.Split('@')[1]
If ( (!$User) -or (!$domain) )
{
Write-Host "Faltam dados para executar a rotina" -ForegroundColor Red
}
Else
{
Write-Host "Localizando a conta "$User -ForegroundColor Yellow
write-host ""
Try
{
$User = Get-ADUser $User -properties pwdLastSet
$User.pwdLastSet = 0
Set-ADUser -Instance $User -Server $Domain
$User.pwdLastSet = -1
Set-ADUser -instance $User -Server $Domain
Write-Host "A data da alteração de senha foi modificada para a conta "$User -ForegroundColor Green
}
Catch
{
Write-Host "O usuário "$User" não foi encontrado" -ForegroundColor Red
}
Finally
{
write-host ""
write-host "Fim do Script"
write-host ""
}
}
Salve e execute esse arquivo. Se preferir uma versão mais simples de código, use o seguinte:
Import-Module ActiveDirectory
Get-ADUser login_do_usuario -property * | ForEach-Object {
echo $_.Name
$_.pwdLastSet = 0
Set-ADUser -Instance $_
$_.pwdLastSet = -1
Set-ADUser -Instance $_
}
Fontes/Referências
https://community.spiceworks.com/topic/717742-why-set-aduser-pwdlastset-0-first
https://gallery.technet.microsoft.com/scriptcenter/try-catch-and-Finally-in-c7734814
Mais Informações
Esperamos ter ajudado da melhor forma possível e estaremos sempre a disposição para mais informações.
Entre em contato conosco pelo e-mail equipe@nvlan.com.br.