Назад | Перейти на главную страницу

Powershell не может получить pwdLastSet из Active Directory

Может ли кто-нибудь обнаружить ошибку в команде 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 были изменены по сравнению со значениями по умолчанию.