Рейтинг:
7
Richard Deeming
Попробуй PasswordLastSet
вместо PwdLastSet
.
Насколько я могу судить, здесь нет ни одного человека. PwdAge
свойство; вам нужно будет рассчитать его из PasswordLastSet
собственность.
Что-то вроде этого должно сработать:
Search-ADAccount -AccountInactive -TimeSpan 90 -UsersOnly -SearchBase "OU=User Accounts,DC=domain,DC=com" |
Get-ADUser -properties PasswordLastSet, PasswordNeverExpires, PasswordExpired, LastLogonDate |
Where-Object {($_.Enabled -eq $true) -and ($_.PasswordNeverExpires -eq $False)} |
Select-object Name, SamAccountName, PasswordExpired, LastLogonDate, @{ Name = 'PasswordAge'; Expression = { (New-Timespan $_.PasswordLastSet).Days }}, PasswordLastSet |
export-csv "c:\data\export.csv"
Active Directory: Get-ADUser Default и расширенные свойства[
^]
NB: То
Get-ADUser
вызов, по-видимому, требуется для загрузки определенных свойств.
KD209
Привет Ричард,
Спасибо за помощь в этом деле. Нет данных возвращаясь для пароль возраст или PasswordLastSet. Существует ли какой-либо другой метод извлечения этих специфических свойств?
Richard Deeming
Есть ли какие-либо данные в этом поле, если вы посмотрите в Active Directory пользователи и компьютеры?
Обычно он пуст, если пароль никогда не был установлен, или установлен флажок "пользователь должен изменить пароль при следующем входе в систему".
KD209
Извините за долгую задержку. Да, есть данные, установленные под атрибутом PwdAge.
Richard Deeming
Это "Пользователь должен изменить пароль при следующем входе в систему" вариант ставили?
KD209
Этот параметр не установлен для большинства пользователей в выходном файле. Все, что я пытаюсь сделать, это выяснить, кто не входил в систему в течение последних 90 дней, и убедиться, что учетные записи, которые заполняются, включены и не имеют срока действия. Возраст пароля просто помогает в качестве ссылки на то, как долго пользователь, возможно, не входил в систему. Если вы знаете какие - либо другие способы добиться этого результата, я открыт.
Richard Deeming
Вы запускаете скрипт из оболочки PS с повышенными правами? Есть предложение по ServerFault[^] что вам, возможно, придется работать от имени администратора, чтобы прочитать этот атрибут.
KD209
Да.. Я запускаю консоль PowerShell ISE в качестве учетной записи администратора домена, которая является единственной учетной записью, имеющей доступ к чтению/записи в AD.
Richard Deeming
Да, но разве она повышена? Вы щелкнули правой кнопкой мыши и выбрали пункт "Запуск от имени администратора"? :)
KD209
Я запускаю его как "Запуск от имени другого пользователя". Я попробую с другой машины, где моя обычная учетная запись является администратором, чтобы она запрашивала учетные данные, когда я запускаю ее с повышенными правами.
KD209
Ладно, я все равно не получаю никаких данных, даже когда скрипт запускается с повышенными правами. Я также дважды проверил, чтобы убедиться, что у пользователей есть данные и в атрибуте PwdAge.
Richard Deeming
Хорошо, еще одна последняя попытка, основанная на хите Google от "Experts Exchange":
Search-ADAccount -AccountInactive -TimeSpan 90 -UsersOnly -SearchBase "OU=User Accounts,DC=domain,DC=com" |
Get-ADUser -properties PasswordLastSet, PasswordNeverExpires, PasswordExpired, LastLogonDate |
Where-Object {($_.Enabled -eq $true) -and ($_.PasswordNeverExpires -eq $False)} |
Select-object Name, SamAccountName, PasswordExpired, LastLogonDate, @{ Name = 'PasswordAge'; Expression = { (New-Timespan $_.PasswordLastSet).Days }}, PasswordLastSet |
export-csv "c:\data\export.csv"
Добавление
Get-ADUser
вызов с дополнительными свойствами, похоже, делает свое дело.
KD209
Это сделало свое дело!!!!! Ты потрясающая! Большое спасибо за ваше время и усилия!