• Skripty pro uvolnění všech uživatelů z MS Active Directory (ITGC). Hledání neaktivních uživatelů v Active Directory

    Dnes se pokusíme nahrát seznam všech uživatelů v samostatný soubor z Aktivní adresář. PowerShell bude v této věci naším hlavním pomocníkem. Jde o to, že Microsoft původně plánoval příkazová konzole PowerShell jako hlavní nástroj pro správu komponent Windows serveru. A dnes, když už máme verzi 2.0, je to pravda.

    Dokonce i v nedávné minulosti, aby mohli administrátoři nějak interagovat s AD, potřebovali mít k dispozici buď utilitu dsquery, nebo různé skripty či utility. Dnes, počínaje Windows Server 2008 R2, můžeme pracovat s AD prostřednictvím PowerShellu. S příchodem PowerShellu 2.0 se pro interakci s Active Directory používá speciální modul Modul Active Directory pro Windows PowerShell , který obsahuje požadovaný seznam rutin. Pro naše úkoly budeme používat příkaz Get-ADUser.

    V závislosti na tom, na kterém operačním systému budeme konzoli PowerShell provozovat, budeme muset provést „přípravné kroky“.

    1) Pokud pracujeme z Windows Serveru až do verze 2012, pak musíme provést příkaz:

    • Import-modul aktivního adresáře – příkaz pro import modulu do AD

    Pro verze operačního systému od roku 2012 je tento modul již ve výchozím nastavení povolen.

    2) Pokud pracujeme z jakéhokoli klientského Windows, pak na něm musí být balíček nainstalován vzdálená správa RSAT s nainstalovaným modulem Active Directory pro Windows PowerShell.

    Stojí za zmínku, že rutinu Get-ADUser se doporučuje spustit, když je množství nahraných dat až 1 000 uživatelů.

    Export uživatelů AD pomocí PowerShellu do samostatného souboru

    Nejprve si zavolejte nápovědu pro příkaz Get-ADUser. Díky tomu obdržíte všechny potřebné příkazy pro další správu.

    • pomoci Get-ADUser - příkaz pro volání pomoci

    Chcete-li získat seznam všech uživatelů se všemi vlastnostmi v okně PowerShellu, musíte spustit následující příkaz:

    • Get-ADUser -filtr * – export seznamu uživatelů AD

    Toto vykládání není zcela informativní a nevejde se vše do okna nezbytné informace. Zkusme proto zúžit vyhledávání a zobrazit vlastnosti konkrétního uživatele jménem user1:

    • Get-ADUser -identity user1 -properties * – export vlastností konkrétního uživatele

    A nyní zkusme exportovat seznam všech uživatelů s jejich vlastnostmi na externí txt nebo csv soubor:

    • Get-ADUser -filtr * -properties * | Export-csv -cesta c:\users.csv -kódování Unicode – exportovat uživatele do samostatného souboru

    Zvláštní pozornost bych chtěl věnovat klíči -kódování Unicode. Slouží k tomu, aby se ruská azbuka po exportu z AD správně zobrazila v nahraném souboru. Například přes Microsoft Excel uvidíme otazníky místo ruských písmen.

    Při prohlížení souboru se data exportují na jeden řádek a jsou tedy nečitelná. Abychom to změnili, musíme provést následující:

    V komentářích k předchozímu článku si místo 1C vzpomněli na účetnictví v Excelu. No, pojďme si ověřit, jak moc umíte Excel. Dnes vám ukážu, jak získat data z Active Directory a pracovat s nimi bez maker a PowerShellu – pouze s běžnými mechanismy Office. Můžete například snadno získat analýzu používání operačních systémů ve vaší organizaci, pokud ještě nemáte něco jako Microsoft SCOM. No, nebo se jen zahřát a nechat se vyvést z míry od scénářů.


    Samozřejmě můžete získat data jako v příkladech níže pouze s jedním řádkem v PowerShellu. Za prvé je ale PowerShell příliš nudný a za druhé umí Excel dynamicky aktualizovat data – výsledné dokumenty lze publikovat na webu a zapomenout na jejich aktualizaci.

    Pro práci s daty použiji engine Power Query. Pro Office 2010 a 2013 budete muset nainstalovat plugin, in Microsoft Office 2016 je tento modul již zabudován. Bohužel nám nestačí standardní edice, potřebujeme Professional.


    Samotný mechanismus je navržen pro příjem a zpracování dat z různých zdrojů – ze starého ODBC a textové soubory na Exchange, Oracle a Facebook. Více o mechanismu a vestavbě skriptovací jazyk„M“ již bylo napsáno na Habré, ale analyzuji několik příkladů použití Power Query k získání dat z Active Directory.

    Zahřívání: podívejte se, kdy se naši uživatelé přihlásili

    Samotný dotaz na doménovou databázi se vytváří na záložce "Data - Nový dotaz - Z jiných zdrojů - Z Active Directory".



    Zadejte zdroj dat.


    Budete muset vybrat název domény, zadat potřebné údaje pro připojení. Dále vybereme typ objektů, v tomto příkladu - uživatel. Na pravé straně okna náhledu je již dotaz spuštěn a zobrazuje náhled dat.



    Připravíme žádost, obdivujeme náhled.


    Dotaz byste měli připravit předem kliknutím na tlačítko "upravit" a výběrem požadovaných sloupců. Tyto sloupce jsou ve skutečnosti třídy a každý z nich obsahuje sadu specifických atributů objektu Active Directory, kromě hlavního sloupce. displayName, což je samo o sobě atribut. Zůstanu u tříd uživatel, osoba, horní A zabezpečeníPrincipal. Nyní musíte vybrat potřebné atributy z každé třídy pomocí "rozšíření" - ikony se dvěma šipkami v záhlaví sloupce:

    • Třída uživatel rozšířit výběrem lastLogonTimestamp A kontrola uživatelského účtu;
    • PROTI osoba Vybrat telefonní číslo;
    • PROTI horníkdyžVytvořeno;
    • a dovnitř zabezpečeníPrincipalSamAccountName.


    Rozšíření dotazu.


    Nyní nastavíme filtr: konkrétně, aby nedošlo k zablokování účtů, potřebujete, aby atribut userAccountControl měl hodnotu 512 nebo 66048. Filtr se může ve vašem prostředí lišit. Více o atributu si můžete přečíst v dokumentaci společnosti Microsoft.



    Použití filtru.


    Někdy Excel nesprávně určí formát dat, zejména hodnoty atributu lastLogonTimestamp. Pokud by takové neštěstí náhle potkalo, na záložce "Převést" můžete nastavit správný formát.

    Nyní by měl být sloupec userAccountControl odstraněn - na displeji není vůbec potřeba. A klikněte na "Stáhnout a zavřít".


    Výsledkem byl talíř, na který zbývá ještě hodně vzpomenout. Například přejmenujte sloupce na něco čitelného. A nastavit automatické aktualizace dat.


    Automatická aktualizace při otevření tabulky nebo podle časového limitu se konfiguruje v záložce "Data" v části "Vlastnosti".



    Nastavení aktualizace dat.


    Po dokončení nastavení aktualizace můžete stůl bezpečně předat pracovníkům personálního oddělení nebo bezpečnostní služby - dejte jim vědět, kdo a kdy vstoupil do systému.


    Vyžádejte si kód v jazyce "M" pod spoilerem.

    let Source = ActiveDirectory.Domains("domain.ru"), domain.ru = Source()[#"Object Categories"], user1 = domain.ru(), #"Remote Columns" = Table.RemoveColumns(user1,( "organizationalPerson", "shadowAccount", "posixAccount", "msExchOmaUser", "msExchBaseClass", "msExchIMRecipient", "msExchCertificateInformation", "msExchMultiMediaUser", "msExchMailStorage", "mstucipientes", "Astributing", "Custom" #"Expanded securityPrincipal" = Table.ExpandRecordColumn(#"Vzdálené sloupce", "securityPrincipal", ("sAMAccountName"), ("sAMAccountName"), #"Expanded top" = Table.ExpandRecordColumn(#"Expanded securityPrincipal ", "top ", ("whenCreated"), ("whenCreated")), #"Expanded person" = Table.ExpandRecordColumn(#"Expanded top", "person", ("telephoneNumber"), ("telephoneNumber ")), #" Expanded user" = Table.ExpandRecordColumn(#"Expanded person", "user", ("lastLogonTimestamp", "userAccountControl"), ("lastLogonTimestamp", "userAccountControl")), #"Řetězce s aplikovaným filtrem" = Table.SelectRows (#"Uživatel rozšířeného prvku", každý ( = 512 nebo = 66048)), #"Změněný typ" = Table.TransformColumnTypes(#"Řádky s aplikovaným filtrem",(("lastLogonTimestamp", zadejte datetime))), #" Odstraněné sloupce1" = Table.RemoveColumns(#"Změněný typ",("userAccountControl")) v #"Odstraněné sloupce1"

    Vytváříme adresář aneb co dělat, když se firemní portál nekamarádí s AD

    Jiná varianta pomocí Excelu ve spojení s Active Directory jde o vytvoření adresáře založeného na datech AD. Je jasné že Adresář bude relevantní pouze v případě, že je doména v pořádku.


    Vytvořte požadavek na objekt uživatel, rozšířit třídu uživatel PROTI pošta a třída osoba PROTI telefonní číslo. Smazat všechny sloupce kromě rozlišovací jméno— struktura domény opakuje strukturu podniku, tedy jména Organizační jednotky shodují se názvy oddělení. Podobně lze skupiny zabezpečení použít jako základ pro názvy organizačních jednotek.


    Nyní z řady CN=Uživatelské jméno, OU=Účetní oddělení, OU=Oddělení, DC=doména, DC=ru musíte získat přímo název oddělení. Nejjednodušší způsob, jak toho dosáhnout, je použít oddělovače na kartě Transformace.



    Extrahujeme text.


    Jako oddělovače používám OU= A ,OU=. V zásadě stačí čárka, ale hraji na jistotu.



    Zadejte oddělovače.


    Nyní pomocí filtru můžete odříznout zbytečné ou jako blokovaní uživatelé a Vestavěný, nastavte řazení a načtěte data do tabulky.



    Pohled na finálový stůl.

    Rychlá zpráva o složení pracovních stanic, bez zavádění agentů a jiných přípravků

    Nyní se pokusíme vytvořit užitečnou tabulku získáním dat na počítačích. Pojďme udělat zprávu o společnosti operační systémy: k tomu vytvoříme dotaz, ale v navigátoru tentokrát vybereme počítač.



    Vytváříme požadavek na objekt počítače.


    Opusťte třídy sloupců počítač A horní a rozšířit je:

    • Třída počítač rozšířit výběrem cn, operační systém, OperatingSystemServicePack A OperatingSystemVersion;
    • ve třídě horní Vybrat kdyžVytvořeno.


    Rozšířená žádost.


    V případě potřeby můžete vytvořit sestavu pouze na serverových operačních systémech. Použijte například filtr na atribut OperatingSystem nebo OperatingSystemVersion. To neudělám, ale opravím zobrazení času vytvoření - zajímá mě pouze rok. Chcete-li to provést, na kartě „Převod“ vyberte sloupec, který potřebujeme, a v nabídce „Datum“ vyberte „Rok“.



    Extrahujeme rok od okamžiku, kdy počítač vstoupil do domény.


    Nyní zbývá sloupec displayname odstranit jako nepotřebný a načíst výsledek. Data jsou připravena. Nyní s nimi můžete pracovat jako s běžným stolem. Pro začátek si uděláme kontingenční tabulku na záložce "Vložit" - "Kontingenční tabulka". Souhlasíme s výběrem zdroje dat a nastavujeme jeho pole.



    Nastavení pole kontingenční tabulky.


    Nyní zbývá upravit design podle chuti a obdivovat výsledek:



    Kontingenční tabulka pro počítače v AD.


    Volitelně můžete přidat souhrnný graf, také na kartě "Vložit". V "Kategoriích" (nebo v "Řádcích" podle chuti) přidejte operační systém, do dat cn. Na záložce „Návrhář“ si můžete vybrat typ grafu, který se vám líbí, já preferoval koláčový graf.



    Výsečový graf.


    Nyní můžete jasně vidět, že i přes probíhající aktualizaci je celkový počet pracovních stanic s Windows XP a serverů s Windows 2003 poměrně velký. A je o co usilovat.


    Vyžádejte si kód pod spoilerem.

    let Source = ActiveDirectory.Domains("domain.ru"), domain.ru = Source()[#"Object Categories"], computer1 = domain.ru(), #"Remote Columns" = Table.RemoveColumns(computer1,( "user", "organizationalPerson", "person"), #"Další vzdálené sloupce" = Table.SelectColumns(#"Vzdálené sloupce",("displayName", "computer", "top")), #"Expanded element computer" = Table.ExpandRecordColumn(#"Další vzdálené sloupce", "počítač", ("cn", "operatingSystem", "operatingSystemServicePack", "operatingSystemVersion"), ("cn", "operatingSystem", "operatingSystemServicePack", " OperatingSystemVersion"), #"Expanded top" = Table.ExpandRecordColumn(#"Expanded computer", "top", ("whenCreated"), ("whenCreated")), #"Extracted year" = Table.TransformColumns( #"Expanded top",(("whenCreated", Date.Year))), #"Removed columns1" = Table.RemoveColumns(#"Extracted year",("displayName")) v #"Removed columns1"

    Přidat štítky

    Věnováno používání PowerShellu ke správě AD. Jako výchozí bod se autor rozhodl vzít 10 typických úloh administrace AD ​​a zjistit, jak je lze zjednodušit pomocí PowerShellu:

    1. Obnovit uživatelské heslo
    2. Aktivovat a deaktivovat Účty
    3. Odemknout uživatelský účet
    4. Smažte svůj účet
    5. Najděte prázdné skupiny
    6. Přidejte uživatele do skupiny
    7. Seznam členů skupiny
    8. Najděte zastaralé účty počítačů
    9. Deaktivujte počítačový účet
    10. Najděte počítače podle typu

    Kromě toho si autor udržuje blog (samozřejmě na PowerShellu), doporučujeme se podívat - jdhitsolutions.com/blog. A to nejaktuálnější, co můžete získat z jeho twitteru twitter.com/jeffhicks.
    Níže je tedy překlad článku „Top 10 Active Directory Tasks Soled with PowerShell“.

    Správa služby Active Directory (AD). Okna PowerShell je jednodušší, než si myslíte, a já vám to chci dokázat. Můžete jednoduše vzít níže uvedené skripty a použít je k řešení řady úkolů správy AD.

    Požadavky

    Chcete-li ke správě AD použít PowerShell, je třeba splnit několik požadavků. Ukážu, jak fungují rutiny AD na příkladu počítače se systémem Windows 7.
    Chcete-li používat rutiny, musíte mít řadič domény Windows Server 2008 R2 nebo si můžete stáhnout a nainstalovat službu Active Directory Management Gateway Service na starší řadiče domény. Před instalací si pozorně přečtěte dokumentaci; Je vyžadován restart.
    Na straně klienta si stáhněte a nainstalujte (RSAT) pro Windows 7 nebo Windows 8. Ve Windows 7 budete muset otevřít Ovládací panely kapitola Programy a vybrat si Zapnout nebo vypnout funkce Windows. Nalézt Nástroje pro vzdálenou správu serveru a rozbalte sekci Nástroje pro správu rolí. Vyberte příslušné položky pro nástroje AD DS a AD LDS, zvláště si uvědomte, že položka musí být vybrána Modul Active Directory pro Windows PowerShell, jak je znázorněno na obrázku 1. (Ve Windows 8 jsou ve výchozím nastavení vybrány všechny nástroje). Nyní jsme připraveni pracovat.

    Obrázek 1 Povolení služby AD DS a nástrojů AD LDS

    Jsem přihlášen pomocí účtu s právy správce domény. Většina rutin, které vám ukážu, vám umožní zadat alternativní přihlašovací údaje. V každém případě doporučuji přečíst nápovědu ( Získejte pomoc) a příklady, které uvedu níže.
    Spusťte relaci PowerShellu a importujte modul:

    PS C:\> Import-Modul ActiveDirectory

    Import vytvoří novou jednotku PSDrive, kterou však nebudeme používat. Můžete však vidět, jaké příkazy jsou v importovaném modulu.

    PS C:\> get-command -modul ActiveDirectory

    Krása těchto příkazů spočívá v tom, že pokud mohu použít příkaz pro jeden objekt AD, pak jej lze použít pro 10, 100 a dokonce 1000. Podívejme se, jak některé z těchto cmdletů fungují.

    Úkol 1: Resetujte uživatelské heslo

    Začněme typickým úkolem: resetování hesla uživatele. Můžete to udělat snadno a jednoduše prostřednictvím rutiny Set-AdccountPassword. Ošemetná část je v tom nové heslo musí být kvalifikován jako zabezpečený řetězec: kus textu, který je zašifrován a uložen v paměti po dobu trvání relace PowerShellu. Nejprve vytvořte proměnnou s novým heslem:
    PS C:\> $new=Read-Host "Zadejte nové heslo" -AsSecureString

    Poté zadejte nové heslo:

    Nyní můžeme extrahovat účet (pomocí samAccountname je nejlepší možnost) a nastavte nové heslo. Zde je příklad pro uživatele Jack Frost:

    PS C:\> Set-ADAccountPassword jfrost -NewPassword $new

    Bohužel je v této rutině chyba: -projít, -co když, A -Potvrdit nefunguje. Pokud dáváte přednost zkratce, vyzkoušejte následující:

    PS C:\>Set-ADAccountPassword jfrost -NewPassword(ConvertTo-SecureString -AsPlainText -String" [e-mail chráněný]"-platnost)

    Nakonec potřebuji, aby si Jack změnil heslo, až se příště přihlásím, a aktualizuji účet pomocí Set-ADUser.

    PS C:\> Set-ADUser jfrost -ChangePasswordAtLogon $True

    Výsledky provádění rutiny se nezapisují do konzoly. Pokud je to nutné, použijte -Skutečný. Mohu však zjistit, zda byla operace úspěšná nebo ne, extrahováním uživatelského jména pomocí rutiny Get-ADUser a specifikaci nemovitosti Platnost hesla vypršela jak je znázorněno na obrázku 2.


    Rýže. 2. Výsledky rutiny Get-ADUser s vlastností PasswordExpired

    Sečteno a podtrženo: resetujte heslo uživatele pomocí PowerShell není vůbec těžké. Přiznávám, že resetování hesla je také snadné. Uživatelé a počítače služby Active Directory konzole Microsoft Management Console (MMC). Použití PowerShellu je ale v pořádku, pokud potřebujete delegovat úkol, nechcete nasazovat zmíněný modul snap-in nebo resetovat heslo jako součást velkého automatizovaného IT procesu.

    Úkol 2: Aktivujte a deaktivujte účty

    Nyní deaktivujeme účet. Budeme pokračovat ve spolupráci s Jackem Frostem. Tento kód používá parametr -co když, který můžete vidět v jiných rutinách, které provádějí změny za účelem testování mého příkazu bez jeho spuštění.

    PS C:\> Zakázat-ADAccount jfrost -whatif Co když: Provedení operace "Nastavit" na cíli "CN=Jack Frost, OU=zaměstnanci,OU=Testování,DC=GLOBOMANTICS,DC=místní".

    A nyní deaktivujeme doopravdy:

    PS C:\> Zakázat-ADAccount jfrost

    A když přijde čas na aktivaci účtu, která rutina nám pomůže?

    PS C:\> Enable-ADAccount jfrost

    Tyto rutiny lze použít ve zřetězeném výrazu, což vám umožní aktivovat nebo deaktivovat tolik účtů, kolik chcete. Tento kód například deaktivuje všechny účty v obchodním oddělení (prodej)

    PS C:\> get-aduser -filtr "oddělení -eq "prodej"" | zakázat-adaccount

    Samozřejmě psaní filtru pro Get-ADUser poměrně komplikované, ale zde je použití parametru -co když spolu s rutinou Zakázat-ADÚčet přichází na pomoc.

    Úkol 3: Odemkněte uživatelský účet

    Představte si situaci, kdy Jack zablokoval svůj účet při pokusu o zadání nového hesla. Namísto snahy najít jeho účet přes GUI lze odemknutí provést jednoduchým příkazem.

    PS C:\> Unlock-ADAccount jfrost

    Rutina také podporuje parametry -co když A -Potvrdit.

    Úkol 4: Smazat účet

    Nezáleží na tom, kolik uživatelů odstraníte – pomocí rutiny je to snadné Remove-ADUser. Nechci odstranit Jacka Frosta, ale kdybych chtěl, použil bych tento kód:

    PS C:\> Remove-ADUser jfrost -whatif Co když: Provedení operace "Remove" na cíli "CN=Jack Frost,OU=zaměstnanci,OU=Testování,DC=GLOBOMANTICS,DC=místní".

    Nebo mohu zadat více uživatelů a odstranit je jedním jednoduchým příkazem:

    PS C:\> get-aduser -filter "enabled -eq "false"" -vlastnost WhenChanged -SearchBase "OU=Zaměstnanci, DC=Globomantics,DC=Místní" | kde ($_.WhenChanged -le (Get-Date).AddDays(-180)) | Remove-ADuser -whatif

    Tento příkaz najde a odstraní všechny deaktivované účty organizační jednotky zaměstnanců, které se nezměnily po dobu 180 dnů nebo déle.

    Úkol 5: Hledání prázdných skupin

    Řízení skupiny je nekonečný a nevděčný úkol. Existuje mnoho způsobů, jak najít prázdné skupiny. Některé výrazy mohou fungovat lépe než jiné v závislosti na vaší organizaci. Níže uvedený kód najde všechny skupiny v doméně, včetně vestavěných skupin.

    PS C:\> get-adgroup -filtr * | kde (-Ne ($_ | get-adgroupmember)) | vyberte jméno

    Pokud máte skupiny se stovkami členů, může použití tohoto příkazu trvat dlouho; Get-ADGroupMember kontroluje každou skupinu. Pokud můžete omezit nebo přizpůsobit, bude to lepší.
    Zde je další přístup:

    PS C:\> get-adgroup -filtr "členové -nejako "*" -AND GroupScope -eq "Universal"" -SearchBase "OU=Skupiny,OU=Zaměstnanci,DC=Globomantics, DC=místní" | Vyberte jméno, skupinu*

    Tento příkaz najde vše univerzální skupiny(Univerzální skupiny), které nemají členství ve skupinách organizačních jednotek a odvozují některé vlastnosti. Výsledek je znázorněn na obrázku 3.


    Rýže. 3. Vyhledávání a filtrování univerzálních skupin

    Úkol 6: Přidání uživatelů do skupiny

    Přidejme Jacka Frosta do chicagské IT skupiny:

    PS C:\> add-adgroupmember "chicago IT" -Členové jfrost

    Ano, je to tak jednoduché. Můžete také snadno přidat stovky uživatelů do skupin, i když je to podle mého názoru trochu nešikovné:

    PS C:\> Add-ADGroupMember "Chicago Employees" -člen (get-aduser -filter "city -eq "Chicago"")

    Použil jsem zřetězený výraz v závorkách, abych našel všechny uživatele, kteří mají vlastnost City v Chicagu. Kód v závorkách se provede a výsledné objekty se předají parametru –Member. Každý objekt uživatele je přidán do skupiny Chicago Employees. Nezáleží na tom, zda máme co do činění s 5 nebo 5000 uživateli, aktualizace členství ve skupinách trvá jen několik sekund. Tento výraz lze také zapsat pomocí Pro každý objekt co by mohlo být pohodlnější:

    PS C:\> Get-ADUser -filtr "city -eq "Chicago"" | foreach(Add-ADGroupMember "Zaměstnanci Chicaga" -Člen $_)

    Úkol 7: Zobrazení seznamu členů skupiny

    Možná budete chtít vědět, kdo je v konkrétní skupině. Měli byste například pravidelně kontrolovat, kdo je ve skupině Domain Admins:

    PS C:\> Get-ADGroupMember "Správci domény"

    Obrázek 4 ukazuje výsledek.


    Rýže. 4. Členové skupiny Domain Admins

    Rutina vygeneruje objekt AD pro každého člena skupiny. A co vnořené skupiny? My Chicago All Users group je kolekce vnořených skupin. K získání seznamu všech účtů stačí použít parametr – Rekurzivní.

    PS C:\> Get-ADGroupMember "Chicago All Users" -Rekurzivní | Vyberte DistinguishedName

    Pokud chcete jít jinou cestou – zjistit, do kterých skupin uživatel patří – použijte vlastnost user Člen:

    PS C:\> get-aduser jfrost -property Memberof | Vyberte -Rozbalit Člen vlastnosti CN=NovýTest,OU=Skupiny,OU=Zaměstnanci, DC=GLOBOMANTICS,DC=místní CN=Chicago Test,OU=Skupiny,OU=Zaměstnanci, DC=GLOBOMANTICS,DC=místní CN=Chicago IT,OU= Skupiny,OU=Zaměstnanci, DC=GLOBOMANTICS,DC=místní CN=Uživatelé prodeje v Chicagu,OU=Skupiny,OU=Zaměstnanci, DC=GLOBOMANTICS,DC=místní

    Použil jsem parametr -Rozbalte vlastnost pro zobrazení jmen Člen jako struny.

    Úkol 8: Najděte zastaralé účty počítačů

    Často dostávám otázku: „Jak najdu zastaralé počítačové účty?“. A já vždy odpovídám: "Co je pro tebe zastaralé?" Společnosti se liší v definici toho, kdy je počítačový účet (nebo uživatelský účet, cokoliv) považován za zastaralý a již nepoužitelný. Pokud jde o mě, věnuji pozornost těm účtům, jejichž hesla nebyla po určitou dobu změněna. Tato lhůta je pro mě 90 dní - pokud počítač během této doby nezměnil heslo spolu s doménou, s největší pravděpodobností je offline a neaktuální. Použitá rutina Get-ADComputer:

    PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -properties *| Vyberte jméno, poslední sadu hesla

    Filtr funguje skvěle s tvrdou hodnotou, ale tento kód bude aktualizován pro všechny účty počítačů, které od 1. ledna 2012 nezměnily svá hesla. Výsledky jsou zobrazeny na obrázku 5.


    Rýže. 5. Najděte zastaralé účty počítačů

    Případně předpokládejme, že jste alespoň na funkční úrovni domény Windows 2003. Filtrujte podle vlastnosti LastLogontimeStamp. Tato hodnota je počet 100 nanosekundových intervalů od 1. ledna 1601 a je uložena v GMT, takže práce s touto hodnotou je trochu složitější:

    PS C:\> get-adcomputer -filter "LastlogonTimestamp -gt 0" -properties * | select name,lastlogontimestamp, @(Name="LastLogon";Expression=(::FromFileTime ($_.Lastlogontimestamp))),passwordlastset | SortLastLogonTimeStamp


    Rýže. 6. Převeďte hodnotu LastLogonTimeStamp do známého formátu

    K vytvoření filtru potřebuji převést datum, například 1. ledna 2012, do správného formátu. Převod se provádí v FileTime:

    PS C:\> $cutoff=(Get-Date "1/1/2012").ToFileTime() PS C:\> $cutoff 129698676000000000

    Nyní mohu tuto proměnnou použít ve filtru pro Get-ADComputer:

    PS C:\> Get-ADComputer -Filtr "(lastlogontimestamp -lt $cutoff) -or (lastlogontimestamp -notlike "*")" -property * | Vyberte Name, LastlogonTimestamp,PasswordLastSet

    Výše uvedený kód najde stejné počítače, které byly zobrazeny na obrázku 5.

    Úkol 9: Deaktivujte účet počítače

    Možná je budete chtít deaktivovat, když najdete neaktivní nebo zastaralé účty. To je docela jednoduché. Budeme používat stejnou rutinu, kterou jsme používali s uživatelskými účty. Můžete to upřesnit pomocí samAccountnameúčet.

    PS C:\> Zakázat-ADAccount -Identita "chi-srv01$" -whatif Co když: Provedení operace "Nastavit" na cíli "CN=CHI-SRV01, CN=Počítače,DC=GLOBOMANTICS,DC=místní".

    Nebo pomocí výrazu potrubí:

    PS C:\> get-adcomputer "chi-srv01" | Zakázat-ADÚčet

    Mohu také použít svůj kód k nalezení zastaralých účtů a deaktivaci všech z nich:

    PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -properties *| Zakázat-ADÚčet

    Úkol 10: Najděte počítače podle typu

    Často se mě také ptají, jak najít účty počítače podle typu, jako jsou servery nebo pracovní stanice. To vyžaduje určitou kreativitu z vaší strany. V AD není nic, co by odlišovalo server od klienta, snad kromě OS. Pokud váš počítač používá systém Windows Server 2008, budete muset provést několik dalších kroků.
    Nejprve musíte získat seznam OS a poté filtrujeme účty podle dostupných OS.

    PS C:\> Get-ADComputer -Filtr * -Vlastnosti Operační systém | Vyberte Operační systém – jedinečný | Seřadit operační systém

    Výsledky jsou zobrazeny na obrázku 7.


    Rýže. 7. Rozbalte seznam OS

    Chci najít všechny počítače se serverovým OS:

    PS C:\> Get-ADComputer -Filtr "Operační systém jako "*Server*"" -vlastnosti Operační systém,Operační systém ServicePack | Vyberte Name,Op* | format-list

    Výsledky jsou zobrazeny na obrázku 8.

    Stejně jako u jiných rutin AD Get můžete přizpůsobit parametry vyhledávání a v případě potřeby omezit dotaz na konkrétní organizační jednotky. Všechny výrazy, které jsem ukázal, lze integrovat do velkých výrazů PowerShellu. Můžete například třídit, seskupovat, používat filtry, exportovat do CSV nebo vytvářet sestavy HTML a odesílat je e-mailem – to vše z PowerShellu! V tomto případě nemusíte psát jediný skript.
    Zde je bonus pro vás: zpráva o věku uživatele uložená v souboru HTML:

    PS C:\> Get-ADUser -Filtr "Enabled -eq "True" -AND PasswordNeverExpires -eq "False"" -Vlastnosti PasswordLastSet,PasswordNeverExpires,PasswordExpires | Vyberte DistinguishedName,Name,pass*,@(Name="PasswordAge"; Expression=((Get-Date)-$_.PasswordLastSet)) |Seřadit Věk hesla -Sestupně | ConvertTo-Html -Title "Přehled stáří hesla" | Out-File c:\Work\pwage.htm !}

    Ačkoli tento výraz může vypadat trochu zastrašující, minimální znalosti PowerShell se snadno používá. A zbývá už jen poslední tip: jak definovat vlastní vlastnost tzv PasswordAge. Hodnota je mezera mezi dneškem a vlastností PasswordLastSet. Poté seřadím výsledky pro svou novou nemovitost. Obrázek 9 ukazuje výstup pro moji malou testovací doménu.

    Aktualizace:
    Příspěvek obsahuje překlad článku na portálu

    Dobré odpoledne, milí čtenáři a předplatitelé, nadále s vámi zkoumáme možnosti Powershell a Active Directory. Jak si pamatujete, má všechny uživatelské a počítačové účty v databázi NTDS.dit, vše je skvělé a centralizované. Když má společnost více než jednoho správce systému, může se ukázat, že hromadí odpadky a další přihlašovací údaje. Všichni jsme lidé a na některé věci můžeme zapomenout a v některých okamžicích můžeme být rozptýleni, což také povede k zapomenutí důležitých informací. A docházíme k závěru, že neaktivní uživatelé (vyhození nebo zapomenutí) se hromadí v adresáři Actvie, každopádně dobře Správce systému by je měl identifikovat, vypnout a poté libovolně odstranit, což je to, co uděláme.

    Přes ADUC snap

    Minule jsem vám již uvedl příklad použití Active snap-in. Uživatelé adresáře a počítače, přes které jsme hledali chybějící počítače v lokální síti, které se měsíc neobjevily. Nyní udělejme totéž s uživatelskými účty. Mám AD na Windows Server 2012 R2, otevřete ADUC, chcete-li to provést, stiskněte WIN + R a zadejte dsa.msc.

    Do formuláře žádosti, který se otevře, zadejte:

    • Dotaz jméno > můj je ztracení uživatelé
    • V případě potřeby popis
    • Požádat o root > zde můžete ponechat celou doménu, nebo zadat na požadované OU

    Poté klikněte na tlačítko požadavku.

    Na kartě Uživatelé vidíme položku „Počet dní od poslední přihlášení v systému“ nastavil jsem například 60 dní.

    V důsledku toho získáte seznam neaktivních zaměstnaneckých účtů, které potřebujete.

    Přes powershell snap

    Totéž lze provést prostřednictvím Powershell. Ihned dám kód, jehož úkolem je probíhá vyhledávání neaktivní uživatelé, zvolil jsem pro to období 45 dní, deaktivaci uživatelských dat a přesun na speciálně určenou OU.

    $date_with_offset=(Get-Date).AddDays(-45)
    $users = Get-ADUser -Vlastnosti LastLogonDate -Filter (LastLogonDate -lt $date_with_offset ) | SortLastLogonDate
    foreach ($user v $users) (set-aduser $user -povoleno $false; move-adobject -identita $user -targetpath "ou=Zrušeno,ou=Msk L.Users,ou=Umístění,dc=msk,dc= contoso,dc=com")
    Get-ADUser -Vlastnosti LastLogonDate -Filter (LastLogonDate -lt $date_with_offset ) | SortLastLogonDate | Název FT, Datum posledního přihlášení -Automatická velikost | Out-File c:\Script\users.txt

    • V prvním řádku deklarujete proměnnou, ve které nastavíte období hledání
    • Vytvořte proměnnou a proveďte výběr na základě času posledního přihlášení
    • Přesouvání uživatelů

    • Vytvoření hlášení do souboru

    Více užitečných věcí pro práci s uživatelem. Před použitím níže uvedených příkazů musíte pomocí příkazu načíst modul Active Directory

    Get-Help Get-ADUser

    Skripty pro uvolnění všech uživatelů z MS Active Directory (ITGC)

    Ivan Piskunov

    Jeden ze standardních auditorských postupů ITGC pro katalog Aktivní adresář je získat stažení všech uživatelů domény. Na základě získaných dat se dále tvoří testovací postupy, například prostudování seznamu správců nebo identifikace uživatelů s prošlým heslem. Nejúčinnějším způsobem vytvoření takového vyložení by bylo použití standardní rozhraní PowerShell , jejichž příklady budeme zvažovat v tomto článku.

    1. Expresní nahrání pomocí skriptu PowerShell

    Níže je uveden skript PowerShell, jako jeden z nejjednodušších a rychlé způsoby získat seznam všech uživatelů domény AD ve formátu CSV, který lze bez problémů otevřít stejným Excelem.

    $objSearcher = New-Object System.DirectoryServices.DirectorySearcher $objSearcher.SearchRoot = "LDAP://ou=Users,ou=Departmets,dc=test,dc=en" $objSearcher.Filter = "(&(objectCategory=person) (!userAccountControl:1.2.840.113556.1.4.803:=2))" $users = $objSearcher.FindAll() # Počet účtů $users.Count $users | ForEach-Object ( $user = $_.Properties New-Object PsObject -Property @( Title = $user.description Department = $user.department Login = $user.userprincipalname Phone = $user.telephonenumber Místnost = $user.physicaldeliveryofficename Name = $user.cn ) ) | Export-Csv -NoClobber -Kódování utf8 -Cesta C: seznam_uživatelů_domény.csv

    Aby skript ve vašem systému fungoval, musíte jej mírně opravit, a to zadat potřebné parametry, tzn. jako v tomto příkladu jsou to parametry Uživatelé v jednotce oddělení v doméně Test.ru. A také zadejte cestu k umístění, kde je soubor uložen. seznam_uživatelů_domény.csv

    Po vyložení, pokud ihned otevřete seznam_uživatelů_domény.csv , bude vypadat v nečitelné podobě, nicméně pomocí standardních nástrojů jej snadno převedeme do formátu, který potřebujeme. Otevření v Excelu seznam_uživatelů_domény.csv , vyberte první sloupec, poté přejděte na kartu "Data" a klikněte na "Text podle sloupců". Vyberte Oddělený a klikněte na Další. Připraveno!

    !Poznámkaže tento skript nezobrazí více než 1000 uživatelů. Je to docela vhodné pro malou společnost, ale ti, kteří mají v doméně velké množství uživatelů, by se měli uchýlit k níže popsaným metodám.

    2. Pokročilá rutina PowerShell pro získání uživatelských stahování Active Directory

    Nástroj Active Directory Module pro Windows PowerShell (zavedený v systému Windows Server 2008 R2 a vyšším) umožňuje vytvářet rutiny, které provádějí různé manipulace s objekty adresáře AD. Chcete-li získat informace o uživatelích a jejich vlastnostech, použijte rutinu Get-ADUser.

    Začít spusťte okno Powershell s právy správce a importujte modul Active Directory pro další akci:
    Import-modul aktivního adresáře

    Na seznam všech doménových účtů a spusťte příkaz:

    Get-ADUser -filtr *

    Na ustoupit kompletní informace o všech dostupných atributech uživatel tuser, spusťte příkaz

    Get-ADUser -identity tuser -properties *


    Zajímají nás například informace o datum a čas změny hesla, kdy vyprší platnost . Výsledek provedení příkazu lze exportovat do textového souboru:

    Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires > C:tempusers.txt

    Nebo hned nahrát do CSV , který se později pohodlně exportuje do Excelu (navíc pomocí sort-object seřadíme tabulku podle sloupce PasswordLastSet a přidáme i podmínku where - uživatelské jméno musí obsahovat řetězec "Dmitry")

    Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | kde ($_.name – jako „*Dmitry*“) | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -cesta c:tempuser-password-expires-2015.csv