Pretraga i filtriranje računara u Active Directory pomoću Powershell-a

Često se dešava da nam Active Directory nije potpuno ažuriran u smislu da imamo nekih računara koji se više ne koriste, a nalaze se u različitim organizacionim jedinicama pa bi ih bilo vrlo teško locirati bez PowerShell-a. Jedan od načina je da pronađemo računare na koje je poslednje logovanje bilo pre više od 100 dana i prebacimo ih u jednu organizacionu jedinicu gde ih kasnije možemo brisati.

Prvo ćemo postaviti željeni datum u promenljivu d sa komandom:

$d = [DateTime]::Today.AddDays(-100)

Zatim ćemo iskoristiti komandu koja pretražuje i izlistava računare u AD, Get-ADComputer, a zatim sa filter parametrom izlistati sve računare koji su u statusu enable i kojima je zadnji datum logovanja manji ili jednak od datuma koji smo stavili u promenljivu $d.

Get-ADComputer -filter {(enabled -eq "true") -and 
(lastlogondate -le $d)} -properties Name,LastLogonDate

Nakon toga možemo sve računare prebaciti u novu OU:

Move-ADObject -Targetpath 'ou=Disabled Computers,dc=rajco,dc=me'

Ukoliko hoćemo više detalja o svojstvima računara koje ćemo dobiti u rezultatu možemo koristiti komandu:

Get-ADComputer -filter {(enabled -eq "true") -and (lastlogondate -le $d)} -Properties * |
ft name, lastlogondate, operatingsystem
Get-ADComputer -filter {(enabled -eq "true") -and (lastlogondate -le $d)}`
-Properties * | select Name, LastLogonDate, OperatingSystem | Out-GridView

Evo kako izgledaju rezultati poslednje dve komande respektivno:

PS_AD01

PS_AD02

Ukoliko pretragu želimo da izvršimo prema imenu računara komanda bi izgledala:

Get-ADComputer -Filter "Name -like '*AICABO*'" | ForEach-Object {$_.Name}

Sada se možemo poigrati i pronaći sve željene računare i proveriti veličinu particija i slobodnog prostora:

 $Computers = Get-ADComputer -Filter "Name -Like '*AACABO*'" |
 ForEach-Object {$_.Name}
Get-WMIObject Win32_LogicalDisk -filter “DriveType=3" -computer $computers | `
Select SystemName,DeviceID,VolumeName,@{Name=”size(GB)”;Expression=`
{“{0:N1}” -f($_.size/1gb)}},@{Name=”freespace(GB)”;Expression={“{0:N1}” `
-f($_.freespace/1gb)}} | Out-GridView

PS_AD04

Mogućnosti su velike, pa možete sami da nastavite sa isprobavanjem komandi po vašoj želji i potrebama.