Разрешения приложения Application.ReadWrite.All
достаточно, убедитесь, что вы предоставили его в Microsoft Graph
, а не Azure Active Directory Graph
, и не забудьте нажать кнопку Grant admin consent
.
![enter image description here](https://i.stack.imgur.com/p5Kve.png)
В вашем скрипте не следует пропускать $body
в последней строке, $body
используется для получения токена доступа. И убедитесь, что эта часть $($app.Id)
является ObjectId
приложения.
$body = @{ grant_type='client_credentials';client_id=$clientId;client_secret=$clientSecret;scope=$resourceUrl; }
Invoke-RestMethod -method PATCH -Uri https://graph.microsoft.com/v1.0/applications/$($app.Id) -Body $body -ContentType application/json -Headers @{Authorization = $AuthHeader }
Вам нужно использовать тело по этой ссылке Update application - Request body
, вы можете сохранить его в файл .json
, затем используйте Get-Content
для его получения.
В моем примере я обновляю appRoles
, вы можете сослаться на него, как показано ниже.
patch.json
file:
{
"appRoles": [
{
"allowedMemberTypes": [
"User"
],
"description": "Creators can create Surveys",
"displayName": "SurveyCreator",
"id": "1b4f816e-5eaf-48b9-8613-7923830595ad",
"isEnabled": false,
"value": "SurveyCreator"
}
]
}
Script :
$uri = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token";
$resourceUrl = 'https://graph.microsoft.com/.default'
$body = @{ grant_type='client_credentials';client_id=$clientId;client_secret=$clientSecret;scope=$resourceUrl; }
$result = Invoke-RestMethod -Method Post -Uri $uri -Body $body
$accessToken = $result.access_token
$authHeader = "Bearer $accessToken"
$body1 = Get-Content -Path "C:\Users\joyw\Desktop\patch.json"
Invoke-RestMethod -method PATCH -Uri https://graph.microsoft.com/v1.0/applications/<Object-id> -Body $body1 -ContentType application/json -Headers @{Authorization = $AuthHeader }
После выполнения команды вы можете использовать метод GET
для проверки результата.
Invoke-RestMethod -method GET -Uri https://graph.microsoft.com/v1.0/applications/<Object-id> -ContentType application/json -Headers @{Authorization = $AuthHeader }
![enter image description here](https://i.stack.imgur.com/HRnKP.png)
Обновление:
Если вы используете это как тело, оно также будет работать.
$patchBody = '{
"displayName" : "dev2"
}'
![enter image description here](https://i.stack.imgur.com/JOi0i.png)