Azure Active Directory mit PowerShell (2)


Hier jetzt die Fortsetzung meines ersten Artikels, wie man Azure Active Directory mithilfe von PowerShell verwalten kann. Im ersten Teil ging es hauptsächlich um die Installation der Cmdlets und um Benutzer anlegen, ändern etc. Hier kommen jetzt noch ein paar Kommandos für Gruppen hinzu, die das Bild ein wenig abrunden helfen.

Gruppe anlegen und abfragen

Mittlerweile sind wir ja schon fit in PowerShell und können den Namen des Cmdlets eigentlich schon fast erraten. Mal schauen… Ich lege eine neue Gruppe an, also wahrscheinlich das Verb "new-". Dann mach ich was im MSOL-Kontext, also sind wir schon bei "new-msol", ja und dann geht es um Gruppen, also versuchen wir mal, ob es das gibt: get-help new-msolgroup. Tata! Richtig! Und gleich die erste Gruppe anlegen:

new-msolgroup -DisplayName "testgruppe1" -Description "Die 1. Testgruppe"

und schon gibt es die Gruppe. Nicht ganz so einfach ist das Abfragen der Gruppe, hier ist der hilfreiche Parameter "-Searchstring":

get-msolgroup -Searchstring testgruppe1 | format-list

und wir sehen die Eigenschaften unserer Gruppe. Was auffällt ist, dass es noch mehr Parameter gibt wie zum Beispiel GroupType, den wir aber weder beim Anlegen noch beim Ändern der Gruppe beeinflussen können. Lediglich die folgenden Parameter stehen uns zur Verfügung:

  • Description: Beschreibung der Gruppe, Freitext
  • DisplayName: Anzeigename der Gruppe
  • ManagedBy: Wer ist der Besitzer der Gruppe

Zur Abfrage der Gruppe gibt es die folgenden (häufig verwendeten, aber nicht vollständigen) Parameter:

  • All: na was wohl? Gibt alle Gruppen zurück
  • Searchstring: Es werden alle Gruppen ausgegeben, deren DisplayName mit dem angegebenen String beginnt (keine Wildcards – zumindest hab ich nicht rausgefunden, wie das gehen sollte…)
  • ObjectID: Erfordert die Angabe des ObjectID, diese ewig lange ID, die bei get-msolgroup in der ersten Spalte steht.

Gruppen füllen

Jetzt zum Wichtigsten: Wie fülle ich eine Gruppe, sprich: wie packe ich Benutzer in die Gruppe? Die Antwort ist einfach, und doch wieder nicht. Einfach, weil: Cmdlet ist add-msolGroupMember, wie erwartet, und nicht einfach, weil wir die ObjectID der Gruppe und des Users brauchen. Also nicht so einfach wie "Füge Benutzer versuch1 der Gruppe testgruppe1 hinzu", sondern eher "füge Benutzer mit der ID 46e55ab7-5e8e-449d-ac25-3ff2251b3da7 der Gruppe mit der ID e5be320a-ef61-44cc-a3e7-0563eb73f1ef hinzu". Na dann…

Wie kommen wir an diese IDs? Nun, sie sind Bestandteil des jeweiligen Objekts und man kann sie mittels get-msoluser oder get-msolgroup anzeigen. Copy&Paste wäre eine Lösung, aber PowerShell hat (natürlich) auch eine komfortablere:

$user=get-msoluser -searchstring "versuch1"

Wir speichern damit das gefundene Objekt in der Variable "$user", einschließlich seiner Eigenschaften. Lässt sich ganz einfach kontrollieren, $user.objectID eingeben, und die ID erscheint. Der Punkt sagt PowerShell, dass vom Objekt (vor dem Punkt) eine bestimmte Eigenschaft (nach dem Punkt) ausgegeben werden soll. Selbiges machen wir mit der gewünschten Gruppe:

$group=get-msolgroup -searchstring "testgruppe1"

…und auch hier der Test mit $group.objectID. So, und schon haben wir alles. Jetzt nur noch zusammen bringen, was zusammen gehört:

add-msolGroupMember -GroupObjectId $group.objectID -GroupMemberObjectId $user.objectID

Alles klar?

Wer übrigens seinen Benutzer oder seine Gruppe nicht über searchstring finden kann, der kann auch andere Filterkriterien verwenden (where-object ist dein Freund):

get-msolUser | where-object {$_.DisplayName -like "*uch1"}

findet den User mit "uch1" am Ende des DIsplaynames, also auch versuch1. Kürzer wird das übrigens, wenn man where-object durch "?" ersetzt:

get-msolUser | ? {$_.DisplayName -like "*uch1"}

Gruppenmitglieder anzeigen

Zum Prüfen könnten wir das folgende Cmdlet verwenden (könnten! Konjunktiv! :-)):

get-msolGroupMember -searchstring "testgruppe1"

Tut aber nicht. Ist ein bereits gemeldeter Bug. Brauchen wir aber eigentlich auch nicht, wir haben ja noch unser Gruppe-Objekt in $group. Also:

get-msolGroupMember -GroupObjectID $group.objectID

und schon funktioniert's.

Mehrere Benutzer in Gruppen aufnehmen

Nehmen wir mal den Fall, dass alle Benutzer vom Standort Berlin in die Gruppe "Berlin1" aufgenommen werden sollen. Schritt 1 wäre, die ObjectID der Gruppe zu finden (siehe oben):

get-msolgroup -searchstring "Berlin1"

Das speichern wir mal kurz in der Variablen $group, wie schon oben gezeigt. Dann brauchen wir noch alle Mitarbeiter, die in Berlin arbeiten…

get-msoluser -City Berlin

und dann brauchen wir noch eine Schleife in PowerShell, die jeden der Berlin-User in die Gruppe aufnimmt. Foreach heißt hier das Zauberwort, oder kurz "%":

get-msoluser -City Berlin | % {Add-MsolGroupMember -GroupObjectId $group.ObjectID -GroupMemberObjectId $_.ObjectID}

Nur kurz zur Erklärung: Für jedes Objekt, dass das erste Kommando ausliefert, wird der Teil in geschweiften Klammern abgearbeitet. Die spezielle Variable "$_" steht dabei für das aktuelle Objekt.

Gruppenmitglieder entfernen

Das Gegenteil machen wir mit "remove-msolGroupMember", auch hier ist wieder die Gruppen-ID und die Benutzer-ID notwendig:

remove-msolGroupMember -groupObjectId $group.ObjectID -groupmemberobjectid $user.objectID

Eine Gruppe komplett leeren? Leider gibt es kein "-All" oder so, also auch hier wieder eine Schleife:

get-msolgroupmember -GroupObjectId $Group.ObjectID | % {remove-msolgroupmember -GroupObjectId $group.ObjectID -GroupMemberObjectId $_.ObjectID}

Comments (1)

  1. Viviane says:

    Thank you so much for all your suggestions on this site. Your shares are very interesting and very rewarding. Congratulations.
     

Skip to main content