有人可能会发现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对象权限已经从默认值改变了。