Поиск неактивных учетных записей в AD

1 мин на чтение

Каждому администратору периодически приходится проверять дебри своего домена на неиспользуемые ПК или учетные записи пользователей/тестовые учетные записи. Когда в домене 100 ПК и 100 пользователей и каждого ты знаешь если не в лицо, но по имени точно - ты счастливчик! Но если количество учетных записей ПК и учетных записей пользователей переваливает за несколько тысяч.. Тут на помощь любому администратору приходит всеми любимый PowerShell! Именно он что называется “из коробки” умеет не только искать, но и находить и удалять “мертвые души”. А поможет в этом всего 2 простых скрипта:

1) Поиск неактивных учетных записей ПК

$path = "e:\CompsOLD.csv"
$DaysLimit = 60
$OldestDate = (Get-Date).AddDays(-$DaysLimit).ToFileTime()
$Comps = Get-ADComputer -Filter * -Properties Name , LastLogonDate , Description , lastLogonTimestamp
$CompsOld = $Comps | Where-Object {($_.lastLogonTimestamp -le $OldestDate) -and ($_.DistinguishedName -notmatch "OU=Computers,OU=Corp,DC=corp,DC=loc")}
$CompsOld | Select Name , LastLogonDate , Description | Sort -Property LastLogonDate | ConvertTo-Csv -Delimiter ";" | Out-File $path -Append -Encoding default
$CompsOld.count

2) Поиск неактивных учетных записей пользователей

$path = "e:\UsersOLD.csv"
$DaysLimit = 60
$OldestDate = (Get-Date).AddDays(-$DaysLimit).ToFileTime()
$Users = Get-ADUser -Filter {(Enabled -eq $true)} -Properties Company , LastLogonDate , ObjectGUID , SID , lastlogontimestamp
$Users_old = $Users | Where-Object {($_.lastlogontimestamp -le $OldestDate) -and ($_.DistinguishedName -match ",OU=Users,")}
$Users_old | Select Company , Name , SamAccountName , LastLogonDate , ObjectGUID , SID | Out-File $path -Append -Encoding utf8
$Users.count