Pokročilé vyhledávání a filtrování v Active Directory pomocí Powershellu

V tomto článku si ukážeme jak jednoduše pomocí Powershellu najít objekty v Active directory. Je jedno jestli hledám uživatele, skupinu, nebo počítač filtrování funguje stejně u všech objektů pouze commandlet se mění.

Co k tomu budeme potřebovat.

Powershell modul pro práci s Active Directory RSAT. Návod na instalaci: Jak nainstalovat Powershell modul pro Active directory, nebo kompletní RSAT – How2Do.cz

Co budeme vyhledávat – používané commandlety

  • Uživatelské účty – vyhledávání v uživatelských účtech 
    • Get-ADUser
  • Účty počítačů – vyhledávání v účtech počítačů
    • Get-ADComputer
  • Skupiny – vyhledávání ve skupinách
    • Get-ADGroup
  • Objekt Active directory – vyhledávání ve všech objektech Active Directory
    • Get-ADObject

Jak vyhledávat v Active Directory pomocí powershellu 

Pro vyhledávání budeme využívat commandlety výše. Silná stránka vyhledávání přes PS je v tom, že mohou používat filtry na parametry (atributy) AD objektů.

Omezený výpis atributů

Všechny objekty v AD mají atributy. Powershell commandlety, aby zrychlily vyhodnocení, tak v základu vypisují pouze základní atributy.

Pokud chci využít atribut, který není základní je nutné použít přepínač –Properties a vyjmenovat chtěné atributy. 

Základní atributy uživatelského účtu.

#Výpis základních atributů pro objekt uživatelského účtu, pokud chci využít více atributů musím použít přepínač -Properties
DistinguishedName Property
Enabled           Property
GivenName         Property
Name              Property
ObjectClass       Property
ObjectGUID        Property
SamAccountName    Property
SID               Property
Surname           Property
UserPrincipalName Property

Pokud ti nevadí nižší výkon a chceš získat všechny atributy můžeš použít –Properties * ale osobně doporučuji spíše omezené množství vyjmenovaných atributů.

Jak zjistit všechny atributy objektu pomocí commandletu get-member.

#Vyhledání jednoho uživatele z AD
$user=Get-ADUser -Properties * -Filter * | Select-Object -First 1
#Výpis všech atributů, které objekt uživatele obsahuje
$user | Get-Member
Filtrování vyhledávání příklady

Jednoduchý příklad filtrování: Najdi všechny uživatele, kteří zadali alespoň jednou špatně heslo. Zde zjistíš, že nalezení je otázkou jednoho řádku, pomocí vyhledávání v konzoli toto nedokážu.

Příklad vyhledání uživatelských účtů, které alespoň jednou zadali špatně heslo, výpis pouze uživatelského jména a počtu špatně zadaného hesla.

#Vyhledání uživatelských účtů, které alespoň jednou zadali špatně heslo.
Get-ADUser -Filter 'BadLogonCount -gt "0"' -Properties BadLogonCount | Select-Object -Property name, BadLogonCount

Dalším příkladem může být vyhledání všech objektů typu počítač, které v názvu obsahují konkrétní řetězec. Tento seznam pak jednoduše exportuješ třeba do CSV a můžeš s ním pak dál pracovat. Export do CSV je v následujícím článku Jak exportovat členy skupiny Active directory v Powershellu – How2Do.cz

#Jednoduchý příklad, který nalezne všechny počítače, které v svém jménu obsahují How, nebo Do, nebo 2ku.
Get-ADComputer -Filter "name -like '*How*' -or name -like '*Do*' -or name -like '*2*'" | Select-Object -Property name

Mohu také pracovat s datumem a filtrovat podle něho. Například lze jednoduše vypsat všechny uživatelské účty vytvořené před 10 dny a novější, při změně za commandlet pro počítače, nebo pro ad objekty stejným způsobem vypíšeš i je.  

#Aktuální datum mínus 10 dní
$date=(Get-Date).AddDays(-10)
#Všechny objekty uživatelů vytvořené před 10 dny a novější
Get-ADUser -Filter 'whenCreated -ge $Date' -Properties WhenCreated

Zjištění počtu uživatelů v daném OU. Případně výpis všech uživatelů v ní provedeš odmazáním | Measure-Object. Do -SearchBase je nutné doplnit DistinguishedName dané Organizational Unit (OU).

#Počet uživatelů v dané OU.
Get-ADUser -Filter * -SearchBase "OU=IT,DC=how2do,DC=cz" | Select-Object -Property name | Measure-Object

Příkladů může být mnoho případně pokud by jsi chtěl nějaký další dej vědět do komentářů pod článkem. 

Pokročilé vyhledávání a filtrování v Active Directory pomocí Powershellu
Tagy:             

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *