Продолжая тему анализа доменных учетных записей пользователей на предмет их соответствия действующей парольной политике предлагаю ещё один вариант скрипта из заметки PowerShell – Поиск пользователей домена с устаревшими паролями. В текущем варианте используется библиотека AD для PowerShell 2.0
В указанном примере в конкретном OU выбираются все действующие учетные записи пользователей, за исключением сервисных, для которых значение атрибута SamAccountName начинается с символов “s-” и выполняется сравнение даты последней смены пароля с максимально возможным значением (текущая дата минус 185 дней)
Import-Module ActiveDirectory $SearchOU = "OU=Domain Users,DC=mydom,DC=com" $PWAgeDaysLimit = 185 $Users = Get-ADUser -Filter {(Enabled -eq $True) -AND (SamAccountName -notlike "s-*")} ` -SearchBase $SearchOU ` -Properties CN, SamAccountName, PasswordLastSet, PasswordNeverExpires, CannotChangePassword, LastLogonDate $OldestDate = (Get-Date).AddDays(-$PWAgeDaysLimit) $UsersOldPWD = $Users | Where-Object {$_.PasswordLastSet -le $OldestDate} $UsersOldPWD | Select ` @{label="User Full Name";expression={$_.CN}},` @{label="SamAccountName";expression={$_.SamAccountName}},` @{label="PWD Last Set";expression={$_.PasswordLastSet}},` @{label="PWD Never Expirest";expression={$_.PasswordNeverExpires}},` @{label="PWD Cannot Change";expression={$_.CannotChangePassword}},` @{label="Last Logon";expression={$_.LastLogonDate}}` | Sort -Property "PWD Last Set"` | Format-Table –AutoSize Write-Host "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" write-host "Total user accounts in OU: " $Users.Count write-host "Users with passwords not changed in" $PWAgeDaysLimit "days: " $UsersOldPWD.Count Write-Host "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
Обратная ссылка: Useful MS Active Directory links « Share IT /