Powershell无法从Active Directory中检索pwdLastSet

有人可能会发现Powershell命令尝试从Active Directory中为某些用户提取pwdLastSet的错误吗?

对于一些帐户它的作品:

PS C:\> get-aduser -filter "name -like 'Admin*'" -Properties pwdLastSet | Select -first 1 name,pwdLastSet | format-list name : Administrator pwdLastSet : 131254235816382539 

对于一些它不:

 PS C:\> get-aduser -filter "name -like 'G*Ol*'" -Properties pwdLastSet | Select -first 1 name,pwdLastSet | format-list name : Grzegorz Olędzki pwdLastSet : 

需要注意的是,从GUI中检索时,该属性似乎被设置: 同一用户的属性对话框

这个问题始终影响到多个帐户,所以我怀疑有些事我根本不明白。

仔细检查并确保您以pipe理员身份运行PowerShell。 如果您的实例未提升,则可能会出现此问题,因为某些密码策略(GPO)可能隐藏。

这里是一个你可以用来testing的函数:

 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" } } } 

如果此脚本未能读取pwdLastSet属性,我能想到的唯一解释是运行脚本的用户没有权限从Active Directory读取该属性。 AFAIK,这个属性对于Domain Users所有成员来说应该默认是可读的,所以可能是Active Directory对象权限已经从默认值改变了。