Продолжая тему анализа доменных учетных записей пользователей на предмет их соответствия действующей парольной политике предлагаю ещё один вариант скрипта из заметки 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 "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
Последние комментарии