Verifique e verifique se você está executando o powershell como administrador. Esse problema pode ocorrer se sua instância não for elevada, pois algumas políticas de senha (GPO) provavelmente estarão ocultas.
Alguém pode identificar um erro no comando Powershell tentando extrair o pwdLastSet do Active Directory para alguns usuários?
Para algumas contas, funciona:
PS C:\> get-aduser -filter "name -like 'Admin*'" -Properties pwdLastSet | Select -first 1 name,pwdLastSet | format-list
name : Administrator
pwdLastSet : 131254235816382539
Para alguns, não:
PS C:\> get-aduser -filter "name -like 'G*Ol*'" -Properties pwdLastSet | Select -first 1 name,pwdLastSet | format-list
name : Grzegorz Olędzki
pwdLastSet :
O que precisa ser observado é que a propriedade parece estar definida quando recuperada da GUI:
O problema afeta consistentemente várias contas, então eu suspeito que há algo que eu simplesmente não entendo.
Aqui está uma função que você pode usar para testar:
function Get-PwdLastSet {
param(
[parameter(Mandatory=$true)] [String] $sAMAccountName
)
$searcher = [ADSISearcher] "(&(pwdLastSet=*)(sAMAccountName=$sAMAccountName))"
$searcher.PropertiesToLoad.AddRange(@("pwdLastSet","sAMAccountName"))
$searchResult = $searcher.FindOne()
if ( $searchResult ) {
$pwdLastSet = $searchResult.Properties["pwdlastset"][0]
if ( $pwdLastSet -gt 0 ) {
[DateTime]::FromFileTime($pwdLastSet)
}
else {
"Password is expired"
}
}
}
Se este script não conseguir ler o atributo pwdLastSet
, a única explicação que posso pensar é que o usuário que está executando o script não tem permissão para ler esse atributo do Active Directory. AFAIK, esse atributo deve ser legível por padrão a todos os membros de Domain Users
, portanto, pode ser que as permissões de objeto do Active Directory tenham sido alteradas dos padrões.