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