Azure AD PowerShell Prüfen ob ein Benutzer Mitglied einer Gruppe ist

The estimated reading time 2 minutes

Heute möchte ich eine kleine Funktion zeigen, welche die Mitgliedschaft eines Azure AD Benutzers in einer Azure AD Gruppe abprüft. Dies kann hilfreich bei einer Automatisierung im Bereich Azure AD sein.
Bei richtiger Benutzung gibt das Script immer TRUE bzw. FALSE zurück.

Was kann das Teil:
1. Gib bei Mitgliedschaft TRUE bzw. FALSE zurück wenn der Benutzer nicht Mitglied ist
2. Prüft ob es angegebenen Benutzer in Azure AD gibt
3. Prüft ob es die angegebenen Gruppe in Azure AD gibt(wird mit Searchstring identifiziert, falls nicht wird ein Fehler ausgegeben)

Bevor die Funktion überhaupt verwendet werden kann, muss eine Verbindung zur PowerShell von Azure AD hergestellt werden. Siehe hierzu:
https://docs.microsoft.com/en-us/microsoft-365/enterprise/connect-to-microsoft-365-powershell?view=o365-worldwide

Install-Module -Name AzureAD
Import-Module  AzureAD
Connect-AzureAD

Nach der erfolgreichen Verbindung kann die Funktion importiert und dann auch genutzt werden:

Wenn die Funktion also eine Gruppe und einen Benutzer findet, dann wird TRUE oder FALSE ausgegebenen.

Der Code:

function Check-UserInAzureGroup {
    [CmdletBinding()]
    param (
      [Parameter(
          Mandatory=$true,
      Position=0)]
      [ValidateNotNull()]
      [string] $upn,
      [Parameter(Mandatory=$true)]
      [ValidateNotNull()]
      [string] $groupname
    )
    $user = "$upn"
    $group = "$groupname"
    #check if the user exists in azure ad
    $azureaduser = (Get-AzureADUser -ObjectId "$user" -ErrorAction SilentlyContinue).count 
    #if variable azureaduser is 1 user exists
    if($azureaduser -eq 1){
                #creating array
                $memberof = @()
                #Check if groupname is unique
                $uniquegroup = (Get-AzureADGroup -SearchString "$group").count
                if(($uniquegroup -eq 0) -or ($uniquegroup -gt 1)){
                #there was no group or more than one group    
                return Write-host "Error: please specify an groupname that is unique identical or groupname was not found!" -ForegroundColor Red   
                }
                else{
                    #one unique group found, get objectid of group
                    [string]$azureadgroupobjid = Get-AzureADGroup -SearchString "$group" | select ObjectId -ExpandProperty ObjectId
                    #get groupmembership of user (objectids) 
                    [string]$memberof = Get-AzureADUserMembership -ObjectId "$user" | select ObjectId -ExpandProperty ObjectId
                    #match objectid of group in memberof
                    If ($memberof -match $azureadgroupobjid) {
                        return $true
                    } Else {
                        return $false
                    }
                }
            }
            else{
                #upn does not exist
                return Write-Host "Please check UserPrincipalName, Azure AD User not found!" -ForegroundColor Red
            }
 }

Wie kann die Funktion also konkret genutzt werden? Einfach eine PowerShell starten, verbinden und die Funktion hineinkopieren.

Viel Erfolg beim Einsatz der Funktion. Gerne könnt ihr auch Kommentare bzw. Feature Requests in die Kommentare schreiben. Sollte euch der Artikel gefallen haben, klickt bitte auf Helpful

Was this article helpful?
YesNo
0 0 votes
Article Rating
Abonnieren
Benachrichtige mich bei
guest
0 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments