Adam the Automator (Dansk)

En populær brug af PowerShell arbejder med Active Directory Directory Services (AD). Der er så mange tidsbesparende ting, PowerShell kan gøre med AD-objekter. Brug af PowerShell får AD-gruppemedlemmer og grupper sparer masser af tid.

Active Directory-grupper er en fantastisk måde at segmentere brugerkonti på. Grupper tillader administratorer at definere ressourceadgang på tværs af mange systemer.

I denne artikel skal vi bruge PowerShell til at få AD-gruppemedlemmer og eksportere AD-gruppemedlemmer. Du kan derefter bruge disse oplysninger til at generere masser af interessante rapporter.

Indholdsfortegnelse

Forudsætninger

Hvis du gerne vil følge med i denne artikel, skal du sørge for at have følgende krav klar:

  • Arbejde på en Windows 10, domænetilsluttet computer
  • Logget ind med en bruger, der kan læse AD-gruppe og brugerkonti
  • Få PowerShell Active Directory-modulet installeret

Lær det grundlæggende

For at forespørge AD-grupper og gruppemedlemmer har du to PowerShell-cmdlets til din rådighed – Get-AdGroup og Get-AdGroupMember.

Get-ADGroup spørger en domænecontroller og returnerer AD-gruppeobjekter. Get-AdGroupMember ser inde i hver gruppe og returnerer alle brugerkonti, grupper, kontakter og andre objekter, der findes i den gruppe.

Sådan får du AD-grupper

For at finde AD-grupper med PowerShell kan du bruge Get-ADGroup cmdlet. Uden parametre vil Get-ADGroup forespørge AD og returnere alle grupper i et domæne ved hjælp af Filter -parameteren. Parameteren Filter er påkrævet. Det findes at begrænse de returnerede grupper baseret på forskellige kriterier.

For eksempel for at finde alle grupper uden hensyn til nogen kriterier skal du bruge Get-ADGroup og angive et jokertegn ( asterisk) til Filter -parameteren. Du kan se et eksempel nedenfor. Rulning gennem alle disse grupper kan tage et stykke tid, hvis du har hundreder eller endda tusinder i dit domæne.

Hvis du har brug for at finde en enkelt gruppe, kan du brug parameteren Identity.

Identity -parameteren er en almindelig parameter blandt alle Active Directory PowerShell-cmdlets. Det giver dig mulighed for at begrænse din forespørgsel ned til et enkelt AD-objekt. Hvis du f.eks. Har brug for at kontrollere, om en gruppe kaldet HR eksisterede, kan du finde ud af det ved at køre kommandoen nedenfor.

Få AD-gruppemedlemmer

Brug af PowerShell til at liste medlemmer af AD-gruppen kræver Get-ADGroupMember cmdlet. Denne cmdlet henter bruger-, gruppe- og computerobjekter i en bestemt gruppe. Måske skal du finde alle medlemmer af gruppen Administratorer. I sin enkleste form skal du blot bruge parameteren Identity igen og angive gruppens navn som nedenfor.

Bemærk, at Get-AdGroupMember kun returnerer gruppemedlemskab for brugere, grupper og computere. Det returnerer ikke andre AD-objekter som kontakter.

Optælling af gruppemedlemmer inden for gruppemedlemmer

Som du måske ved, AD-grupper kan ikke kun indeholde brugerkonti, men andre grupper kaldes også indlejring. Når en gruppe er indlejret i en anden gruppe, arver medlemmerne af denne gruppe de samme tilladelser, der er tildelt den overordnede gruppe.

Som standard gør PowerShell Get-AdGroupMember cmdlet ikke ikke returnere indlejrede gruppemedlemmer. For at afhjælpe dette kan du bruge parameteren Recursive. For eksempel kunne du finde medlemmer af grupper, der er indlejret inde i HR-gruppen ved hjælp af Recursive -parameteren som vist nedenfor.

Sådan får du flere grupper / medlemmer på én gang

Hvis du har brug for forespørgsel til AD for mange forskellige grupper eller gruppemedlemmer på én gang, kan du også gøre det ved hjælp af en PowerShell foreach-loop. En foreach-løkke kører en kommando eller kode for hvert element i en samling. I dette tilfælde vil samlingen være en liste over gruppenavne.

Måske er du nødt til at finde alle gruppemedlemmer i HR-, regnskabs- og it-grupperne. For at gøre det skal du først oprette en samling eller et array med disse gruppenavne. Eksemplet nedenfor definerer denne samling som $groupNames. Kør derefter Get-ADGroupMember for hvert navn i den samling, og angiv navnet på hver gruppe til parameteren Identity.

Du kan alternativt bruge ForEach-Object cmdlet til at løbe over grupper.

Brug af alternative legitimationsoplysninger

Som mange andre PowerShell-cmdlets har AD-gruppens cmdlets en Credential parameter.Når du kører en AD-gruppe-cmdlet, bruger den som standard dine indloggede legitimationsoplysninger til at forespørge Active Directory. Denne adfærd dikterer, at du skal være på en domænetilsluttet computer, der er logget ind som en Active Directory-bruger, der har tilladelse.

Men hvad hvis du er på en arbejdsgruppecomputer eller har brug for at godkende til AD som en anden bruger? I så fald kan du bruge parameteren Credential. Denne parameter giver dig mulighed for at angive et brugernavn og en adgangskode, der skal bruges til godkendelse.

For eksempel har din brugerkonto muligvis ikke ret til at udføre en AD-opgave. Du har en servicekonto med yderligere rettigheder. Du kan være logget ind som en standardbruger, men alligevel godkende med servicekontoen som vist nedenfor.

Get-Credential cmdlet beder om et brugernavn / adgangskode for at oprette en legitimationsoplysninger. Denne legitimationsoplysninger sendes derefter til Get-AdGroup cmdlet til godkendelse.

Parameteren Credential er allestedsnærværende i PowerShell til levering af godkendelsesoplysninger. Du kan få flere oplysninger ved at læse Brug af PowerShell Get-Credential-cmdlet og alle ting legitimationsoplysninger.

Få gruppemedlemmer med Get-ADGroup?

Det lyder måske kontraintuitivt, men du kan også få gruppemedlemmer med Get-ADGroup cmdlet.

Det viser sig, at Get-ADGroup returnerer en egenskab for hver gruppe kaldet members. Dette er en samling af AD-objekter, der er medlemmer af en gruppe.

For eksempel kan du finde gruppemedlemmer i den HR-gruppe uden at bruge Get-ADGroupMember gør noget som dette:

Hvorfor bruge denne metode frem for den anden? Hovedforskellen er, at egenskaberne members indeholder alle typer AD-objekter – ikke kun brugere, computere og andre grupper.

Måske har du kontakter inden for forskellige grupper . Når du kører Get-ADGroupMember, vises disse kontakter ikke. Men hvis du beder Get-ADGroup om at returnere alle medlemmer i den gruppe sammen med at udvide samlingen som vist nedenfor, vil du se kontakterne.

Find specifikke AD-attributter

I det grundlæggende afsnit ovenfor returnerede du simpelthen alle grupper og gruppemedlemmer. De oplysninger, der returneres for hver gruppe og gruppemedlem, er kun en delmængde af de AD-attributter, der er knyttet til hver type objekt.

Måske vil du se en brugerkontos e-mail-adresse, sidste logindato eller anden tilknyttet AD-attribut. ? For at gøre dette skal du være kreativ.

Måske var du i stand til at finde alle gruppemedlemmerne i HR-gruppen, men har også brug for at se hver brugerkontos e-mail-adresse?

Filtreringsresultater

Indtil dette tidspunkt har du fundet alle grupper og gruppemedlemmer, men i et dagligt arbejdsmiljø har du sjældent brug for det. Chancerne er, at du kun skal finde et begrænset antal af hver vare. AD-gruppens cmdlets har et par måder, du kan håndtere dette på.

Filterparameteren

Som nævnt tidligere har begge cmdlets Filter parameter. Denne parameter giver dig mulighed for at begrænse, hvad der returneres på mange forskellige måder uden for denne artikels anvendelsesområde.

Ved hjælp af Filter -parameteren kan du begrænse resultaterne med enhver AD attribut såsom navn, gruppetype, e-mail-adresse, sidste login for brugere osv.

For eksempel vil du måske kun finde sikkerhedsgrupper. I så fald vil du angive en GroupCategory -attribut og angive en betingelse for at sikre, at kun Security -grupper returneres.

Måske vil du finde alle sikkerhedsgrupper, men de må ikke være lokale lokale domæner. Derefter tilføjede du en anden betingelse (denne gang ved hjælp af -ne -operatøren) for at forhindre, at lokale domæneregrupper returneres.

Hvis du vil lære at oprette forespørgselfiltre, skal du tjekke Learning Active Directory- og LDAP-filtre i PowerShell.

Begrænsning af grupperesultater efter organisationsenhed (OU)

Måske har du forskellige grupper indlejret i OUer. Du ønsker ikke nødvendigvis at finde alle grupper, men kun grupper i en bestemt OU. I så fald kan du bruge parameteren SearchBase.

Parameteren SearchBase giver dig mulighed for at specificere en OUs særpræg navn (DN) for at begynde at søge efter grupper i. For eksempel har du måske en OU kaldet Locations i roden af dit domæne. I Locations OU har du hver OU-placering oprettet som Austin, NYC og Los Angeles. Du leder kun efter grupper i NYC OU og er nødt til at begrænse at se de andre.

Et eksempel på AD OU-struktur er vist nedenfor.Bemærk, at der findes andre grupper uden for placerings-OUerne.

Måske skal du finde alle AD-grupper, der kun er i NYC OU. For at begrænse forespørgslen skal du bruge SearchBase -parameteren, der angiver DN som vist nedenfor. Alle grupper inden for Locations OU returneres.

Men nu skal du finde alle grupper i alle OUer under Locations OU. Get-ADGroup returnerer kun grupper i selve Locations OU – ikke i underordnede OUer.

For at returnere grupper inden for underordnede OUer skal du bruge SearchScope parameter. Denne parameter svarer til Recursive -parameteren, idet den også inspicerer underordnede objekter.

For eksempel for at finde alle grupper i en hvilken som helst OU under Locations OU, angiv Subtree eller 2. Denne værdi for SearchScope fortæller Get-ADGroup om rekursivt at se på alle børn, børnebørn og videre OUer.

For en komplet opdeling af SearchScope parameterindstillinger henvises til Get-ADGroup dokumentationen.

Eksport af AD-grupper og medlemmer

Så du ved endelig, hvordan du spørger og returnerer de grupper og gruppemedlemmer, du har brug for. Alle disse oplysninger sendes til PowerShell-konsollen. Men nu skal du hente disse oplysninger ind som CSV-fil eller Excel-regneark.

Det eneste du skal gøre nu er at sende alle disse oplysninger til en fil.

Eksport til en CSV

Et populært format at eksportere AD-oplysninger til er en CSV. PowerShell har en praktisk cmdlet, der giver dig mulighed for nemt at oprette CSV-filer fra PowerShell-output kaldet Export-Csv.

Du kan oprette en CSV-fil fra enhver kommando, der er omfattet af denne artikel ved at føre den til Export-Csv. Ved hjælp af eksemplet nedenfor omdirigeres al output, som Get-AdGroup ville vende tilbage til konsollen, til en CSV-fil i stedet.

For mere information om denne praktiske cmdlet, se Eksport-Csv: PowerShell-måden at behandle CSV-filer som førsteklasses borgere.

Eksport til Excel

PowerShell har ikke en naturlig måde at eksportere information til Excel på. Men du kan altid downloade det gratis community-modul kaldet ImportExcel. Dette modul bringer CSV-lignende eksportegenskaber direkte til Excel-regneark. For at installere PowerShell-modulet skal du køre Install-Module ImportExcel -Scope CurrentUser.

Brug eksemplet ovenfor i stedet for en CSV-fil til at eksportere grupperne til et Excel-regneark, du Brug Export-Excel cmdlet som vist nedenfor.

ImportExcel-modulet har masser af funktionalitet til at arbejde med Excel. Hvis du har brug for et mere avanceret regneark, har det sandsynligvis en funktion til dig.

Få flere oplysninger om brug af ImportExcel-modulet i denne artikel. Det giver en god introduktion til nogle almindelige brugssager, den kan håndtere.

Konklusion

Brug af kun to PowerShell-cmdlets kan du gøre næsten alt med AD-grupper. Denne artikel var kun en introduktion til den tilgængelige funktionalitet. Brug den viden, der er samlet her, følg nogle af linkene til dybere emnedyk i artiklen og se hvad du kan bygge!

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *