有人能发现 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 :
该问题持续影响多个帐户,因此我怀疑其中存在一些我根本无法理解的事情。
答案1
仔细检查并确保您以管理员身份运行 powershell。如果您的实例未提升权限,则可能会出现此问题,因为某些密码策略 (GPO) 可能被隐藏。
答案2
如果 pwdLastSet 值为空,则表示用户必须在下次登录时更改密码。取消勾选用户属性中的复选框将显示日期
答案3
以下是您可以用来测试的函数:
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 读取该属性的权限。据我所知,默认情况下,该属性应该可供 的所有成员读取Domain Users
,因此可能是 Active Directory 对象权限已从默认值更改。