Im Rahmen einer Aktualisierung mussten die Anwender von mehreren Unternehmensapplikationen ermittelt werden.
Dazu wollte ich allerdings nur den Applikationsnamen definieren und eine entsprechenden CSV-Export erhalten. Bei meiner ersten Analyse fiel mir dann direkt auf, dass bei den betroffenen Zuordnungen nur Gruppen Definiert sind. Entsprechend ist das Skript aktuell nur auf diesen Sachverhalt abgestimmt.
#Definition der Azure-Unternehmensanwendung
$app_name = "Demo App"
#Definition der Exportdatei
$ExportFileCsv = "E:\DemoCompany\Export\AppUsers.csv"
### ----- Beginn Skripting ----- ###
#Verbindung zur AzureAD aufbauen
Connect-AzureAD
#Ermittlung der Applikationsdaten
$sp = Get-AzureADServicePrincipal -Filter "displayName eq '$app_name'"
#Ermittlung der Angebundenen Azure AD-Gruppen
$assignments = Get-AzureADServiceAppRoleAssignment -ObjectId $sp.ObjectId -All $true
#Verarbeitung der eingetragenen Gruppen
$groupMembers = foreach ($group in $assignments){
#Ermittlung der Daten zur aktuellen Gruppe
$AzureADgroup = Get-AzureADGroup -SearchString $group.PrincipalDisplayName
#Definition der ObjectID der aktuellen Gruppe
$ObjectId = $AzureADgroup.ObjectId
#Definition des Displaynames der aktuellen Gruppe
$GroupName = $AzureADgroup.DisplayName
#Kurze Pause...
Start-Sleep -Milliseconds 200
#Ermittlung der Mitglieder der aktuellen Gruppe
Get-AzureADGroupMember -ObjectId $ObjectId | Select-Object -Property @{Name = 'GroupName'; Expression= {$GroupName}}, DisplayName, UserPrincipalName
}
#Export der ermittelten Daten in das Export-CSV
$groupMembers | Export-Csv -Path $ExportFileCsv -NoTypeInformation -Append -Encoding UTF8 -Delimiter ";"
Eine Erweiterung, so dass neben den Gruppen auch die Benutzer ermittelt werden, ist bereits auf dem ToDo-Zettel und wird eine V2.