Powershell script - vypsání uživatelů ze skupiny

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
Alfajk
Začátečník
Začátečník
Registrován: 15. kvě 2009

Powershell script - vypsání uživatelů ze skupiny

Příspěvek od Alfajk »

potřeboval bych script, který zajistí výpis do csv z určité distribuční skupiny ve tvaru zobrazované jméno + mail, včetně zanořených skupin

určitě je to triviální, ale přesný příklad jsem nevygooglil a to nejlepší co jsem dokázal, byl holej výpis uživatelů z určité skupiny, to mě je bez mailu k ničemu... nemáte ho náhodou někdo při ruce?
CPU: AMD Ryzen 5 7600X@5,5GHz | GPU: ASUS TUF RTX 3070 GAMING 8GB@2000MHz | MB: ASUS PRIME X670-P WIFI | RAM: 32GB DDR5 6000MHz CL36 FURY EXPO | SSD: WD Black SN770 NVMe 2TB | PSU: Seasonic Focus GM-850 Gold | CPU Cooler: Noctua NH-D15 | Case: be quiet! Pure Base 500DX Black | OS: Win 10 Professional | Monitor: ASUS TUF Gaming VG27AQL1A
Krteq
Čestný člen
Čestný člen
Registrován: 22. dub 2005
Bydliště: Brno

Re: Powershell script - vypsání uživatelů ze skupiny

Příspěvek od Krteq »

Co tohle?

Kód: Vybrat vše

Get-ADUser -SearchBase "OU=SomeOU,DC=Company,DC=ORG" -Properties * -Filter * | select samaccountname,mail | export-csv test.csv
Bere to i sub OUs. Samozřejme záleží jaké jméno tam chceš "name" nebo "samaccountname", to si můžeš zmenit podle libosti.

Pokud bys chtěl aby se přidalo i v jakém sub OU ti useři jsou, přidej to do selectu "CanonicalName", vyjede ti to celou cestu k objectu

Kód: Vybrat vše

Get-ADUser -SearchBase "OU=SomeOU,DC=Company,DC=ORG" -Properties * -Filter * | select samaccountname,mail, CanonicalName | export-csv test.csv
Alfajk
Začátečník
Začátečník
Registrován: 15. kvě 2009

Re: Powershell script - vypsání uživatelů ze skupiny

Příspěvek od Alfajk »

dík, zítra zkusím, ještě abych si to ujasnil -

Get-ADUser -SearchBase "OU=SomeOU,DC=Company,DC=ORG" -Properties * -Filter * | select samaccountname,mail | export-csv test.csv

místo toho tučného "OU=SomeOU,DC=Company,DC=ORG" tam mohu nacpat to konkrétní jméno distribuční skupiny, kterou chci prohledat a vypsat a ono si ji to už najde v AD samo?
CPU: AMD Ryzen 5 7600X@5,5GHz | GPU: ASUS TUF RTX 3070 GAMING 8GB@2000MHz | MB: ASUS PRIME X670-P WIFI | RAM: 32GB DDR5 6000MHz CL36 FURY EXPO | SSD: WD Black SN770 NVMe 2TB | PSU: Seasonic Focus GM-850 Gold | CPU Cooler: Noctua NH-D15 | Case: be quiet! Pure Base 500DX Black | OS: Win 10 Professional | Monitor: ASUS TUF Gaming VG27AQL1A
zombux
Odborník PCT
Odborník PCT
Uživatelský avatar
Registrován: 05. čer 2003
Bydliště: sluníčkář a havloid z pražské lumpenkavárny

Re: Powershell script - vypsání uživatelů ze skupiny

Příspěvek od zombux »

ale tohle cílí skript na OU v AD, ne na distribuční skupinu
Pfizer & Moderna inside
ignorelist: mimo jiné všechny kremrole (danny1691, Lokomotiva, CZECHYa, pavel2003, shorty25, ajtak, stepan001, ulver, brambora81, CZ_viper, tielka a pár dalších exotů)
Krteq
Čestný člen
Čestný člen
Registrován: 22. dub 2005
Bydliště: Brno

Re: Powershell script - vypsání uživatelů ze skupiny

Příspěvek od Krteq »

Jesus, máš recht, jsem si to nepřečetl porádně :roll:

Já jel hned AD a ne exchange
Alfajk
Začátečník
Začátečník
Registrován: 15. kvě 2009

Re: Powershell script - vypsání uživatelů ze skupiny

Příspěvek od Alfajk »

zombux píše:ale tohle cílí skript na OU v AD, ne na distribuční skupinu
to je dobře, ono to poslouží stejně, tu distribuční skupinu máme i v AD, takže ji můžu klidně vypsat odtamtud, pokud stačí jen vybrat konkrétní jméno a ostatní je stejné, nebo ne?
CPU: AMD Ryzen 5 7600X@5,5GHz | GPU: ASUS TUF RTX 3070 GAMING 8GB@2000MHz | MB: ASUS PRIME X670-P WIFI | RAM: 32GB DDR5 6000MHz CL36 FURY EXPO | SSD: WD Black SN770 NVMe 2TB | PSU: Seasonic Focus GM-850 Gold | CPU Cooler: Noctua NH-D15 | Case: be quiet! Pure Base 500DX Black | OS: Win 10 Professional | Monitor: ASUS TUF Gaming VG27AQL1A
Alfajk
Začátečník
Začátečník
Registrován: 15. kvě 2009

Re: Powershell script - vypsání uživatelů ze skupiny

Příspěvek od Alfajk »

tak ten příkaz z vrchu úplně nezafungoval podle představ, pole "mail" prostě nevypsal, -Properties * -Filter * jako neznámé příkazy tak jsem je vyhodil a stejně nic

ale použil jsem přes exchange management shell tohle:

Kód: Vybrat vše

Get-DistributionGroupMember xxxxxxxxxxxx | select displayName,PrimarySMTPAddress |  Export-CSV -Encoding "UTF8" c:\temp\dg.csv
není to dokonalé, protože to neprochází vnořené a PrimarySMTPAddress není vždy mail, pole "mail" (u kontaktů) to ale nechce vypsat, ale alespoň něco
CPU: AMD Ryzen 5 7600X@5,5GHz | GPU: ASUS TUF RTX 3070 GAMING 8GB@2000MHz | MB: ASUS PRIME X670-P WIFI | RAM: 32GB DDR5 6000MHz CL36 FURY EXPO | SSD: WD Black SN770 NVMe 2TB | PSU: Seasonic Focus GM-850 Gold | CPU Cooler: Noctua NH-D15 | Case: be quiet! Pure Base 500DX Black | OS: Win 10 Professional | Monitor: ASUS TUF Gaming VG27AQL1A
zombux
Odborník PCT
Odborník PCT
Uživatelský avatar
Registrován: 05. čer 2003
Bydliště: sluníčkář a havloid z pražské lumpenkavárny

Re: Powershell script - vypsání uživatelů ze skupiny

Příspěvek od zombux »

no, pozor na jednu věc. pole mail (nebo email? teď jsem zapomněl) je takový ten "windows email", který nemusí nutně vždycky korespondovat s Exchange adresou - typicky ano, ale není to pravidlo. PrimarySMTPAddress jde z Exchange takže to správně je. pak můžeš případně ještě vypsat ProxyAddresses (zase mě neber doslova, už je to pár let co jsem se s tímhle sral), to je ale zase objekt a musíš zanořovat nebo parsovat. vtip je taky v tom, že get-user, get-aduser, get-mailbox nebo get-mailboxstatistics mají omezený scope a je třeba je používat podle toho co zrovna chceš vypsat.
Pfizer & Moderna inside
ignorelist: mimo jiné všechny kremrole (danny1691, Lokomotiva, CZECHYa, pavel2003, shorty25, ajtak, stepan001, ulver, brambora81, CZ_viper, tielka a pár dalších exotů)
motorolarulez
Nováček
Nováček
Registrován: 23. srp 2004
Bydliště: Plzeň
Kontaktovat uživatele:

Re: Powershell script - vypsání uživatelů ze skupiny

Příspěvek od motorolarulez »

Jelikoz potrebujes rekurzi, tak to uz na one-liner v Exchange Shellu nebude (Get-DistributionGroupMember ho neumi), proto bych spis doporucil jit na to cestou skrz AD (coz jsem pochopil, ze ti nevadi).

Takze Get-ADGroupMember spolecne s parameterem -Recursive a nasledne si z toho vytahnout vystup, ktery potrebujes.

Pro inspiraci treba takhle :

Kód: Vybrat vše

Get-ADGroupMember -Identity "DistroGroup" -Recursive | Get-ADUser -Properties DisplayName,Mail,TargetAddress | select -Property DisplayName,Mail,TargetAddress
Jelikoz nevim, jak to mate v ramci Vaseho Exchange udelane (on-prem / Exchange online / hybrid), tak saham jak po atributu mail (tam by, jak uz Zombux rikal, mel *ve vetsine pripadu* byt ten samy udaj, jaky vidi Exchange ... ale bohuzel ne vzdy to je pravidlem), tak zaroven TargetAddress (coz ale muze byt kontraproduktivni, pokud zrovna migrujete do cloudu, apod.) - kazdopadne pro on-prem bude fungovat spolehlive.

Pokud by tohle nestacilo, tak uz je to na parsovani ProxyAddresses atribut z AD (tam jsou uvedeny vsechny adresy (zamerne nechci rikat mailovky), ktere na sobe objekt ma, ale to uz je opet spis na skript nez jednoduchy one-liner ... nebo si dopsat rekurzi pro Get-DistributionGroupMember
Alfajk
Začátečník
Začátečník
Registrován: 15. kvě 2009

Re: Powershell script - vypsání uživatelů ze skupiny

Příspěvek od Alfajk »

jsme zrovna v mezicestě do online, v on-premisu je už jen část, do online exchange shellu nemám přístup, takže si musím vystačit s tímhle exportem z onpremisovýho nebo z AD, ono je to stejně 1:1.
To pole s mailem se skutečně jmenuje "mail", nevím, proč ho ten první příkaz nevytáhnul a ještě byl celý název uživatele ve tvaru výpisu cesty i s OU, místo holého názvu (jméno a příjmení)

ten TargetAddress vypisuje ty nesmyslný jmeno@mail.onmicrosoft...
CPU: AMD Ryzen 5 7600X@5,5GHz | GPU: ASUS TUF RTX 3070 GAMING 8GB@2000MHz | MB: ASUS PRIME X670-P WIFI | RAM: 32GB DDR5 6000MHz CL36 FURY EXPO | SSD: WD Black SN770 NVMe 2TB | PSU: Seasonic Focus GM-850 Gold | CPU Cooler: Noctua NH-D15 | Case: be quiet! Pure Base 500DX Black | OS: Win 10 Professional | Monitor: ASUS TUF Gaming VG27AQL1A
zombux
Odborník PCT
Odborník PCT
Uživatelský avatar
Registrován: 05. čer 2003
Bydliště: sluníčkář a havloid z pražské lumpenkavárny

Re: Powershell script - vypsání uživatelů ze skupiny

Příspěvek od zombux »

no však jasně že vypisuje, když jsou už v cloudu (samozřejmě pak taky záleží jak máš nastavenej routing mezi internetem, O365 a on-prem)
Pfizer & Moderna inside
ignorelist: mimo jiné všechny kremrole (danny1691, Lokomotiva, CZECHYa, pavel2003, shorty25, ajtak, stepan001, ulver, brambora81, CZ_viper, tielka a pár dalších exotů)
motorolarulez
Nováček
Nováček
Registrován: 23. srp 2004
Bydliště: Plzeň
Kontaktovat uživatele:

Re: Powershell script - vypsání uživatelů ze skupiny

Příspěvek od motorolarulez »

Pokud zrovna migrujete do O365, tak atribut TargetAddress uz je zavadejici - jak uz jsi sam zjistil, Exchange tam po migraci mailboxu do cloudu upravi u objektu cilovou domenu na tu "online routing" tak, aby korektne fungoval mezi Exchange on-prem a Exchange online mail flow, Free/Busy lookup a dalsi veci. Takze to ti bude k k nicemu.

Za predpokladu, ze jedete v hybridu (coz bych si tipnul), tak info v cloudu bude z drtive vetsiny opravdu 1:1 s AD odkud se objekty syncuji, tim padem to co ti vrati AD, bude spravne.
Alfajk
Začátečník
Začátečník
Registrován: 15. kvě 2009

Re: Powershell script - vypsání uživatelů ze skupiny

Příspěvek od Alfajk »

ještě jeden "oneliner" bych potřeboval, znám mailovku v alias tvaru, ale potřebuju zjistit, jaké schránce je skutečně přiřazená, dá se to nějak jednoduše a rychle vypsat?
CPU: AMD Ryzen 5 7600X@5,5GHz | GPU: ASUS TUF RTX 3070 GAMING 8GB@2000MHz | MB: ASUS PRIME X670-P WIFI | RAM: 32GB DDR5 6000MHz CL36 FURY EXPO | SSD: WD Black SN770 NVMe 2TB | PSU: Seasonic Focus GM-850 Gold | CPU Cooler: Noctua NH-D15 | Case: be quiet! Pure Base 500DX Black | OS: Win 10 Professional | Monitor: ASUS TUF Gaming VG27AQL1A
motorolarulez
Nováček
Nováček
Registrován: 23. srp 2004
Bydliště: Plzeň
Kontaktovat uživatele:

Re: Powershell script - vypsání uživatelů ze skupiny

Příspěvek od motorolarulez »

Pokud mas nejaky pristup k Exchange, tak je to jeden prikaz :

Get-Recipient "alias"
Alfajk
Začátečník
Začátečník
Registrován: 15. kvě 2009

Re: Powershell script - vypsání uživatelů ze skupiny

Příspěvek od Alfajk »

mám, zítra vyzkouším. díky.

Ještě jednu vychytávku bych chtěl - vypsat podle konkrétního uživatele všechny schránky, které má nasdílené/má do nich přístup? konkrétně: vyberu recepční Jmeno.Prijmeni a potřebuju vypsat všechny mailboxy zasedacích místností, které má nasdílené(jsou to jen klasické sdílené mailboxy)
CPU: AMD Ryzen 5 7600X@5,5GHz | GPU: ASUS TUF RTX 3070 GAMING 8GB@2000MHz | MB: ASUS PRIME X670-P WIFI | RAM: 32GB DDR5 6000MHz CL36 FURY EXPO | SSD: WD Black SN770 NVMe 2TB | PSU: Seasonic Focus GM-850 Gold | CPU Cooler: Noctua NH-D15 | Case: be quiet! Pure Base 500DX Black | OS: Win 10 Professional | Monitor: ASUS TUF Gaming VG27AQL1A
motorolarulez
Nováček
Nováček
Registrován: 23. srp 2004
Bydliště: Plzeň
Kontaktovat uživatele:

Re: Powershell script - vypsání uživatelů ze skupiny

Příspěvek od motorolarulez »

Muzes upresnit "ma nasdilene / ma do nich pristup"?

Tech urovni jak lze zpristupnit mailbox nebo jeho cast (Inbox / kalendar, atd.) uzivateli je povicero (Send on Behalf / Send As / pristup do slozky v mailboxu, atd.) a cili se na ne ruznymi prikazy.

Bezne to treba byva tak, ze pokud mas resource mailbox (typicky zasedacka), tak recepcni tam maji pristup pouze na urovni kalendare, ale do mailboxu jako takoveho vetsinou neni duvod lezt ... ale vse se to odviji od toho, jak to pouzivate (nastaveni calendar processingu, moderace, apod.)

Neco se da najit rovnou v AD na urovni atributu objektu, neco zjistis jen pres Exchange ...
Alfajk
Začátečník
Začátečník
Registrován: 15. kvě 2009

Re: Powershell script - vypsání uživatelů ze skupiny

Příspěvek od Alfajk »

je to přes online 365 ECP -> resources -> meeting room -> mailbox delegation -> full access takže když vyberu třeba recepční a vyjedu si, kde všude má full access, bude to třeba 5 mailboxů/zasedaček
CPU: AMD Ryzen 5 7600X@5,5GHz | GPU: ASUS TUF RTX 3070 GAMING 8GB@2000MHz | MB: ASUS PRIME X670-P WIFI | RAM: 32GB DDR5 6000MHz CL36 FURY EXPO | SSD: WD Black SN770 NVMe 2TB | PSU: Seasonic Focus GM-850 Gold | CPU Cooler: Noctua NH-D15 | Case: be quiet! Pure Base 500DX Black | OS: Win 10 Professional | Monitor: ASUS TUF Gaming VG27AQL1A
Odpovědět

Zpět na „Programování a web“