Como expirar uma senha baseada no tempo de password
- Leandro Cascão
- 2 de out. de 2024
- 1 min de leitura
Problema
Foi solicitado que todos os usuários que não alteraram a senha nos últimos 30 dias tenham suas senhas definidas como expiradas.
Solução
A melhor maneira de resolver isso é através de um script em PowerShell. Abaixo está um guia passo a passo para criar e executar o script que forçará a expiração das senhas desses usuários.
Passo a Passo
Abra o PowerShell ISE e cole o código abaixo:
#Pega todos os usuários do domínio
$ADUsers= Get-ADUser -filter * -Properties pwdLastSet
#Define o número de dias após os quais a senha deve expirar
$dias = 30
# CCalcula a data limite para a troca de senha
$dataLimite = (Get-Date).AddDays(-$dias)
# Obtém todos os usuários que alteraram suas senhas há mais de 30 dias
$ADuser_Reset = ADUsers | Where-Object {
$_.pwdLastSet -ne $null -and [datetime]::FromFileTime($_.pwdLastSet) -lt $dataLimite
}
# Loop para cada usuário na lista
foreach ($usuario in $ADuser_Reset) {
# Força a expiração da senha
Set-ADUser -Identity $usuario -Replace @{pwdLastSet = 0} -WhatIf
Write-Output "Senha expirada para: $($usuario.SamAccountName)"
}
Explicação do Script
Obtendo Usuários:
Usa Get-ADUser para buscar todos os usuários do domínio e incluir a propriedade pwdLastSet, que indica quando a senha foi alterada pela última vez.
Definindo a Data Limite:
Define a variável $dias como 30, o que representa o período máximo sem trocar a senha.
Calcula $dataLimite como a data de 30 dias atrás.
Filtrando os Usuários:
Filtra os usuários com a propriedade pwdLastSet que sejam mais antigas que a data limite.
Comentários