private/Update-ServicePrincipal.ps1
function Update-ServicePrincipal { Param ([string]$AppId, [string[]]$Permissions, [bool]$silent) $MSI = ( Get-AzureADServicePrincipal -Filter "AppId eq '$appId'" ) if ( -not $MSI ) { $MSI = New-AzureADServicePrincipal -AppId $appId } $GraphAppId = "00000003-0000-0000-c000-000000000000" #Windows Azure Active Directory $GraphServicePrincipal = Get-AzureADServicePrincipal -Filter "appId eq '$GraphAppId'" foreach ( $permission in $permissions ) { $AppRole = $GraphServicePrincipal.AppRoles | Where-Object { $_.Value -eq $permission -and $_.AllowedMemberTypes -contains "Application" } try { New-AzureADServiceAppRoleAssignment ` -ObjectId $MSI.ObjectId ` -PrincipalId $MSI.ObjectId ` -ResourceId $GraphServicePrincipal.ObjectId ` -Id $AppRole.Id | Out-Null Write-Output " Granted $permission" } catch [Microsoft.Open.AzureAD16.Client.ApiException] { if ($_.Exception.ErrorContent.Message.Value -match "already exists") { if ( -not $silent ){ Write-Output " Permission $permission Already Granted" } } else { Cleanup-Environment -exitCode 1 } } } } |