top of page

Como expirar uma senha baseada no tempo de password

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

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

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

  3. Filtrando os Usuários:

    • Filtra os usuários com a propriedade pwdLastSet que sejam mais antigas que a data limite.

Posts recentes

Ver tudo

Comentários


bottom of page