Powershell - Teste as credenciais do usuário no AD, com redefinição de senha

Powershell - Teste as credenciais do usuário no AD, com redefinição de senha

Posso usar o Powershell com êxito para saber se um usuário se autentica no Active Directory:

Function Test-ADAuthentication {
    param($username,$password)
    (new-object directoryservices.directoryentry "",$username,$password).psbase.name -ne $null
}

Test-ADAuthentication "test" "Password1"

No entanto, não consigo descobrir como:

  1. Verifique se a senha precisa ser redefinida, enquanto
  2. A verificação das credenciais enviadas funcionou na última senha.

Como alguém poderia fazer isso?

Responder1

As credenciais podem ser testadas executando um processo. Um exemplo abaixo,

Start-Process -FilePath cmd.exe /c -Credential (Get-Credential -UserName $username -Message 'Test Credential')

Ou simplesmente:

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

Você receberá uma solicitação para inserir uma senha. Se você precisar ler a senha de uma string (má prática), será necessário inicializar o objeto de credencial antecipadamente. Mais detalhes sobre esse método podem ser encontrados na ajuda.

Get-Help Get-Credential

Responder2

Esta é uma maneira de obter os dias restantes de um determinado usuário antes que sua senha expire:

(([datetime]::FromFileTime((Get-ADUser user -Properties "msDS-UserPasswordExpiryTimeComputed")."msDS-UserPasswordExpiryTimeComputed")) - (Get-Date)).TotalDays

Se o número for 0 ou negativo, a senha expirou.

Este comando irá verificar se a conta do usuário está bloqueada:

(Get-ADUser user -Properties LockedOut).LockedOut

Quanto à segunda pergunta - se bem entendi, você deseja ver se a senha inserida atualmente é a mesma usada anteriormente.

Até onde eu sei, isso não é possível - com certas políticas, o AD pode manter registros de senhas anteriores, mas elas não ficam expostas para acesso externo.

informação relacionada