Может ли кто-нибудь обнаружить ошибку в команде Powershell при попытке извлечь pwdLastSet из Active Directory для некоторых пользователей?
Для некоторых аккаунтов это работает:
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 :
Следует отметить, что свойство, кажется, установлено при извлечении из графического интерфейса:
Проблема постоянно затрагивает несколько учетных записей, поэтому я подозреваю, что есть что-то, чего я просто не понимаю.
Дважды проверьте и убедитесь, что вы используете PowerShell от имени администратора. Эта проблема может возникнуть, если у вашего экземпляра нет повышенных прав, поскольку некоторые политики паролей (GPO), вероятно, скрыты.
Если значение pwdLastSet равно null / blank, это означает, что пользователь должен изменить свой пароль при следующем входе в систему. Если снять флажок в свойствах пользователей, вы увидите дату
Вот функция, которую вы можете использовать для тестирования:
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 были изменены по сравнению со значениями по умолчанию.