Adam the Automator (Čeština)

Populární použití prostředí PowerShell je práce se službou Active Directory Directory Services (AD). Existuje tolik časově úsporných věcí, které může PowerShell dělat s objekty AD. Pomocí prostředí PowerShell získáte členy a skupiny AD a ušetříte spoustu času.

Skupiny služby Active Directory jsou skvělým způsobem, jak segmentovat uživatelské účty. Skupiny umožňují správcům definovat přístup k prostředkům v mnoha systémech.

V tomto článku pojďme pomocí prostředí PowerShell získat členy skupiny AD a exportovat členy skupiny AD. Tyto informace pak můžete použít ke generování spousty zajímavých přehledů.

Obsah

Předpoklady

Pokud byste chtěli postupovat v tomto článku, ujistěte se, že máte připraveny následující požadavky:

  • Práce na počítači s Windows 10 připojeným k doméně
  • Přihlášeni pomocí uživatele, který může číst skupinu AD a uživatelské účty
  • Nechte si nainstalovat modul PowerShell Active Directory

Naučit se základy

Chcete-li se dotazovat na skupiny AD a členy skupiny, máte k dispozici dvě rutiny prostředí PowerShell – Get-AdGroup a Get-AdGroupMember.

Get-ADGroup zadá dotaz na řadič domény a vrátí objekty skupiny AD. Get-AdGroupMember nahlédne dovnitř každé skupiny a vrátí všechny uživatelské účty, skupiny, kontakty a další objekty, které v této skupině existují.

Získání skupin AD

Chcete-li najít skupiny AD pomocí prostředí PowerShell, můžete použít Get-ADGroup rutinu. Bez parametrů Get-ADGroup vyhledá AD a vrátí všechny skupiny v doméně pomocí parametru Filter. Je požadován parametr Filter. Existuje omezení skupin vrácených na základě různých kritérií.

Chcete-li například vyhledat všechny skupiny bez ohledu na kritéria, použijte Get-ADGroup a zadejte zástupný znak ( hvězdička) pro parametr Filter. Níže vidíte příklad. Pokud máte ve své doméně stovky nebo dokonce tisíce, může procházení všech těchto skupin chvíli trvat.

Pokud potřebujete najít jednu skupinu, můžete použijte parametr Identity.

Parametr Identity je běžným parametrem mezi všemi rutinami PowerShell služby Active Directory. Umožňuje vám omezit dotaz na jeden objekt AD. Například pokud potřebujete zkontrolovat, zda existuje skupina s názvem HR, můžete to zjistit spuštěním následujícího příkazu.

Získání členů skupiny AD

Používání prostředí PowerShell k výpisu členů skupiny AD vyžaduje rutinu Get-ADGroupMember. Tato rutina získá uživatele, skupinu a počítačové objekty v konkrétní skupině. Možná budete muset najít všechny členy skupiny Administrators. Ve své nejjednodušší podobě jednoduše použijete parametr Identity, který zadá název skupiny, jak je uvedeno níže.

Upozorňujeme, že Get-AdGroupMember vrací pouze členství ve skupinách uživatelům, skupinám a počítačům. Nevrátí další objekty AD, jako jsou kontakty.

Výčet členů skupiny uvnitř členů skupiny

Jak možná víte, skupiny AD může obsahovat nejen uživatelské účty, ale i další skupiny zvané také vnoření. Když je skupina vnořená uvnitř jiné skupiny, členové této skupiny dědí stejná oprávnění přidělená nadřazené skupině.

Ve výchozím nastavení rutina PowerShell Get-AdGroupMember nevrátit vnořené členy skupiny. Chcete-li to napravit, můžete použít parametr Recursive. Například můžete najít členy skupin vnořených do skupiny HR pomocí parametru Recursive, jak je uvedeno níže.

Získání více skupin / členů najednou

Pokud potřebujete dotazovat se na AD pro mnoho různých skupin nebo členů skupiny najednou, můžete to udělat také pomocí foreach smyčky PowerShell. Smyčka foreach spouští příkaz nebo kód pro každou položku v kolekci. V tomto případě bude touto kolekcí seznam názvů skupin.

Možná budete muset najít všechny členy skupiny ve skupinách HR, účetnictví a IT. Nejprve byste vytvořili kolekci nebo řadu těchto názvů skupin. Následující příklad definuje tuto kolekci jako $groupNames. Potom u každého názvu v této kolekci spusťte Get-ADGroupMember a u parametru Identity zadejte název každé skupiny.

Můžete také použít rutinu ForEach-Object pro smyčku přes skupiny.

Použití alternativních pověření

Stejně jako mnoho jiných rutin prostředí PowerShell mají rutiny skupiny AD Credential parametr.Ve výchozím nastavení používá při každém spuštění rutiny skupiny AD vaše přihlašovací údaje k dotazu ve službě Active Directory. Toto chování určuje, že musíte být v počítači připojeném k doméně přihlášeni jako uživatel služby Active Directory, který má oprávnění.

Ale co když jste v počítači pracovní skupiny nebo potřebujete ověřit v AD jako jiný uživatel? V takovém případě můžete použít parametr Credential. Tento parametr umožňuje určit uživatelské jméno a heslo, které se mají použít k ověření.

Například váš uživatelský účet například nemá právo provádět úlohu AD. Máte servisní účet s dalšími právy. Můžete být přihlášeni jako standardní uživatel, ale stále se ověřovat pomocí účtu služby, jak je uvedeno níže.

Rutina Get-Credential vás vyzve k zadání uživatelského jména / hesla k vytvoření pověření. Toto pověření se poté předá Get-AdGroup rutině pro ověření.

Parametr Credential je v prostředí PowerShell všudypřítomný pro poskytování přihlašovacích údajů. Další informace najdete v článku Používání rutiny Get-Credential v prostředí PowerShell a pověření pro všechny věci.

Získání členů skupiny pomocí Get-ADGroup?

Může to znít neintuitivně, ale členy skupiny můžete získat také pomocí Get-ADGroup rutiny.

Ukázalo se, že Get-ADGroup vrací vlastnost pro každou skupinu s názvem members. Toto je kolekce objektů AD, které jsou členy skupiny.

Chcete-li například znovu najít členy skupiny v této skupině HR bez použití Get-ADGroupMember, udělejte něco takového:

Proč používat tuto metodu nad druhou? Hlavní rozdíl spočívá v tom, že vlastnosti members obsahují všechny typy objektů AD – nejen uživatele, počítače a další skupiny.

Možná máte kontakty uvnitř různých skupin . Když spustíte Get-ADGroupMember, tyto kontakty se nezobrazí. Pokud ale řeknete Get-ADGroup, aby vrátili všechny členy v této skupině spolu s rozšířením této sbírky, jak je uvedeno níže, uvidíte kontakty.

Vyhledání konkrétních atributů AD

Ve výše uvedené základní části jste jednoduše vraceli všechny skupiny a členy skupiny. Informace vrácené pro každou skupinu a člena skupiny jsou pouze podmnožinou atributů AD přidružených ke každému typu objektu.

Možná chcete zobrazit e-mailovou adresu uživatelského účtu, datum posledního přihlášení nebo jiný přidružený atribut AD. ? Chcete-li to provést, musíte být kreativní.

Možná jste dokázali najít všechny členy skupiny ve skupině HR, ale musíte také vidět e-mailovou adresu každého uživatelského účtu?

Filtrování výsledků

Až do tohoto okamžiku jste našli všechny skupiny a členy skupiny, ale v každodenním pracovním prostředí to musíte dělat jen zřídka. Je pravděpodobné, že u každé položky budete muset najít pouze omezený počet. Rutiny skupiny AD mají několik způsobů, jak to zvládnout.

Parametr filtru

Jak již bylo zmíněno dříve, obě rutiny mají Filter parametr. Tento parametr umožňuje omezit to, co je vráceno mnoha různými způsoby mimo rámec tohoto článku.

Pomocí parametru Filter můžete omezit výsledky jakýmkoli AD atribut, jako je jméno, typ skupiny, e-mailová adresa, poslední přihlášení pro uživatele atd.

Možná budete například chtít najít pouze skupiny zabezpečení. V takovém případě zadáte atribut GroupCategory a nastavíte podmínku, která zajistí vrácení pouze Security skupin.

Možná chcete najít všechny skupiny zabezpečení, ale nesmí to být místní skupiny domény. Poté byste přidali další podmínku (tentokrát pomocí operátoru -ne), která zabrání vrácení místních skupin domén.

Pokud se chcete dozvědět, jak vytvářet filtry dotazů, nezapomeňte si přečíst Učení filtrů Active Directory a LDAP v prostředí PowerShell.

Omezení výsledků skupiny podle organizační jednotky (OU)

Možná máte různé skupiny vnořené do OU. Nemusíte nutně chtít najít všechny skupiny, ale pouze skupiny v konkrétní organizační jednotce. V takovém případě můžete použít parametr SearchBase.

Parametr SearchBase umožňuje určit rozlišující organizační jednotku name (DN) to start searching for groups in. Možná máte například OU s názvem Locations v kořenovém adresáři vaší domény. V lokaci OU máte každou lokaci OU vytvořenou jako Austin, NYC a Los Angeles. Hledáte pouze skupiny v organizační jednotce NYC a potřebujete omezit vidění ostatních.

Níže je uvedena příklad struktury AD OU.Všimněte si, že jiné skupiny existují mimo organizační jednotky umístění.

Možná budete muset najít všechny skupiny AD, které jsou pouze v organizační jednotce NYC. Chcete-li omezit dotaz, použijete parametr SearchBase poskytující DN, jak je uvedeno níže. Všechny skupiny uvnitř organizační jednotky umístění jsou vráceny.

Nyní však musíte najít všechny skupiny ve všech organizačních jednotkách pod organizační jednotkou umístění. Get-ADGroup vrací pouze skupiny v samotné organizační jednotce umístění – nikoli v podřízených organizačních jednotkách.

Chcete-li vrátit skupiny uvnitř podřízených organizačních jednotek, musíte použít SearchScope parametr. Tento parametr je podobný parametru Recursive v tom, že zkontroluje také podřízené objekty.

Chcete-li například najít všechny skupiny v jakékoli organizační jednotce v rámci organizační jednotky umístění, zadejte Subtree nebo 2. Tato hodnota pro SearchScope říká Get-ADGroup rekurzivnímu pohledu na všechny děti, vnoučata a další organizační jednotky.

Úplný přehled možností parametrů SearchScope naleznete v dokumentaci Get-ADGroup.

Export skupin a členů AD

Takže konečně víte, jak vyhledávat a vracet požadované skupiny a členy skupiny. Všechny tyto informace se odesílají do konzoly PowerShell. Nyní ale musíte tyto informace dostat do souboru CSV nebo listu aplikace Excel.

Jediné, co teď musíte udělat, je poslat všechny tyto informace do souboru.

Export do a CSV

Jedním z populárních formátů pro export informací o AD je CSV. PowerShell má praktickou rutinu, která vám umožní snadno vytvářet soubory CSV z výstupu PowerShellu s názvem Export-Csv.

Soubor CSV můžete vytvořit z libovolného příkazu popsaného v tomto článku přesměrováním na Export-Csv. Pomocí níže uvedeného příkladu přesměrujete veškerý výstup, který by se Get-AdGroup vrátil na konzolu, místo toho do souboru CSV.

Další informace o této užitečné rutině najdete v Export-CSV: Způsob PowerShellu, jak zacházet se soubory CSV jako s občany první třídy.

Export do aplikace Excel

PowerShell nemá nativní způsob exportu informací do aplikace Excel. Vždy si však můžete stáhnout bezplatný komunitní modul s názvem ImportExcel. Tento modul přináší možnosti exportu ve formátu CSV přímo do listů aplikace Excel. Chcete-li nainstalovat modul PowerShell, spusťte Install-Module ImportExcel -Scope CurrentUser.

Pomocí výše uvedeného příkladu jste místo souboru CSV museli exportovat skupiny do listu aplikace Excel, Použil bych Export-Excel rutinu, jak je znázorněno níže.

Modul ImportExcel má spoustu funkcí, aby fungoval s Excelem. Pokud potřebujete propracovanější list, pravděpodobně má pro vás nějakou funkci.

Další informace o používání modulu ImportExcel naleznete v tomto článku. Poskytuje skvělý úvod k některým běžným případům použití, které zvládne.

Závěr

Pomocí pouhých dvou rutin prostředí PowerShell můžete provádět se skupinami AD téměř cokoli. Tento článek byl pouze úvodem k funkcím, které máte k dispozici. Použijte zde shromážděné znalosti, postupujte podle některých odkazů na hlubší ponory předmětu v článku a podívejte se, co můžete vytvořit!

Napsat komentář

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