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.
