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

Каждому администратору периодически приходится проверять дебри своего домена на неиспользуемые ПК или учетные записи пользователей/тестовые учетные записи. Когда в домене 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

 

You may also like...

  • Федор

    Круто, конечно, вот втолько он в файло сохраняет, но нифига не удаляет )=