Поиск неиспользуемых компьютеров в AD

Как я упоминал ранее, задачи системного администрирования часто весьма рутинны. Но, к счастью, для облегчения жизни создано множество инструментов для решениях этих задач. Одним из таких универсальных инструментов является PowerShell.

В ходе работы в любой компании наблюдается текучесть кадров, и это нормально, не везде так стабильно как в верхушке российского истеблишмента 🙂  Соответственно, в Active Directory накапливаются учетки компьютеров тех людей, которые ушли. И если в небольшой компании несложно все запомнить и оперативно чистить AD, то в большей компании это сложно.

С помощью PowerShell задача решается всего в несколько строчек:


$searchOU = "OU=IT,OU=staff,DC=contoso,DC=com"
$lastdays = 365
$date = (get-date).AddDays(-$lastdays)
Get-ADComputer -SearchBase $searchOU -Filter {LastLogonTimeStamp -lt $date} -properties *| Select name,LastLogonDate,DistinguishedName | ConvertTo-Html | Out-File "$home\Documents\Zombies.html"

После чего можно вручную что-то сделать с результатами поиска, удалить или отключить поштучно. Либо можно сразу перенести компы в отдельный контейнер:


$newOU = "OU=Zombies,OU=staff,DC=contoso,DC=com"
Get-ADComputer -SearchBase $searchOU -Filter {LastLogonTimeStamp -lt $date} -properties * | Move-ADObject -TargetPath $newOU

У меня, при решении этой задачки было много свободного времени, поэтому я решил, что будет интересно заодно поработать c Windows Forms и превратил скрипт с чудовище с GUI, где все вводится в красивые формы, а на выходе выдает красивые уведомления. Законченный скрипт для ленивых админов можно найти здесь