
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:
- Verifique se a senha precisa ser redefinida, enquanto
- 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.