Продолжая тему анализа доменных учетных записей пользователей и компьютеров, которые давно не проходили авторизацию в домене предлагаю ещё один вариант скрипта из заметки PowerShell – Поиск неиспользуемых учетных записей пользователей и компьютеров в домене. В текущем варианте используется библиотека AD для PowerShell 2.0
В указанном примере в конкретном OU выбираются все действующие учетные записи пользователей и компьютеров и выполняется сравнение даты последней авторизации (LastLogonDate) с максимально возможным значением (текущая дата минус 90 дней)
Import-Module ActiveDirectory
$SearchOU = "OU=Domain Users and Computers,DC=mydom,DC=com"
$DaysLimit = 90
$OldestDate = (Get-Date).AddDays(-$DaysLimit)
#
$Users = Get-ADUser -Filter {(Enabled -eq $True)} `
-SearchBase $SearchOU -Properties SamAccountName,LastLogonDate,CN
$UsersOld = $Users | Where-Object {$_.LastLogonDate -le $OldestDate}
$UsersOld | Select `
@{label="SamAccountName";expression={$_.SamAccountName}},`
@{label="Last Logon";expression={$_.LastLogonDate}},`
@{label="User Full Name";expression={$_.CN}}`
| Sort -Property "Last Logon" | Format-Table –AutoSize
Write-Host "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
write-host "Total users in OU: " $Users.Count " / Unused users: " $UsersOld.Count
Write-Host "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
#
$Comps = Get-ADComputer -Filter {(Enabled -eq $True)} `
-SearchBase $SearchOU -Properties Name,LastLogonDate,Description
$CompsOld = $Comps | Where-Object {$_.LastLogonDate -le $OldestDate}
$CompsOld | Select `
@{label="PC Name";expression={$_.Name}},`
@{label="Last Logon";expression={$_.LastLogonDate}},`
@{label="Description";expression={$_.Description}}`
| Sort -Property "Last Logon" | Format-Table –AutoSize
Write-Host "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
write-host "Total computers in OU: " $Comps.Count " / Unused computers: " $CompsOld.Count
Write-Host "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
Последние комментарии