Мне нужно получить последнее изменение пароля для группы учетных записей в группе безопасности Active Directory, и я чувствую, что это то, что PowerShell должен хорошо делать.
Прямо сейчас я уже застрял в том, как прочитать атрибут pwdLastSet из учетной записи AD, на которую я смотрю. Даже запустить что-то простое, как это:
[adsi] "LDAP://cn=user1,ou=Staff,ou=User Accounts,dc=ramalamadingdong,dc=net" | Format-List *
дает результаты для pwdLastSet, которые выглядят так:
pwdLastSet : {System.__ComObject}
Я чувствую, что поступаю неправильно, поэтому как лучше запросить, а затем отформатировать вывод (значение основано на эпохе Windows и не очень хорошо читается человеком) атрибута pwdLastSet?
Встроенные командлеты AD, которые поставляются с Windows 7 / Windows Server 2008 R2, теперь могут делать это достаточно просто. В Windows 7 из командной строки Powershell:
Атрибут «PasswordLastSet» представляется переведенной версией фактического атрибута «pwdLastSet».
источник
Есть более простой способ.
У объекта ADSI есть метод ConvertLargeIntegerToInt64. Обратите внимание, что это метод объекта ADSI, а не System .__ Comobject, который возвращается путем запроса значения атрибута timestamp, поэтому $ user.pwdLastSet.value.ConvertLargeIntegerToInt64 () не будет работать. Вы должны вызвать его следующим образом:
Это даст вам метку времени LDAP, которую необходимо преобразовать в удобочитаемую дату, как объяснено в Bratch выше. Это будет работать для любого значения атрибута timestamp, возвращаемого поставщиком ADSI, и метод ConvertLargeIntegerToInt64 (я полагаю) предоставляется любым объектом, представляющим запись каталога.
Собрав все вместе, вот как вы получите дату, когда пароль был последний раз установлен:
источник
Вот простой способ отобразить компьютеры AD:
источник
Установите: http://www.quest.com/powershell/activeroles-server.aspx
открытый PowerShell
Запустите следующие команды:
add-PSSnapin quest.activeroles.admanagement
Get-QADUser | ft отображаемое имя, PasswordLastSet
Первая команда загружает снятый квестовый оснастка. Вам не нужно делать это, если вы используете ярлык для квеста в стартовом меню. Вторая команда получает список всех пользователей и пользователей, а также время последнего изменения пароля.
источник
Добавьте функцию ConvertADSLargeInteger в ваш скрипт, вы можете получить ее здесь:
PowerShell: преобразование Active Directory IADSLargeInteger в System.Int64
Вот как вы бы это использовали:
источник
возможно, вам стоит взглянуть на использование свойства passwordLastChanged. Смотрите здесь для получения дополнительной информации: http://www.microsoft.com/technet/scriptcenter/resources/qanda/aug06/hey0801.mspx
источник