У меня есть приложение Azure AD, в которое мне нужно добавить дополнительное appRole в разделе appRoles субъекта службы с помощью Powershell. Я использую Invoke-RestMethod для API Graph со следующим URL-адресом API: https://graph.microsoft.com/beta/servicePrincipals/AppID
Invoke-RestMethod возвращает PSCustomObject, а затем я добавляю еще один PSCustomObject в раздел appRoles. Затем я преобразовываю объект PSCustomObject в JSON и хочу записать JSON обратно субъекту службы. Проблема в том, что когда я хочу записать JSON обратно в субъект службы, я получаю сообщение об ошибке:
Invoke-RestMethod: удаленный сервер возвратил ошибку: (400) неверный запрос.
Я пытался сделать это также с помощью Проводника графиков, а затем я получаю сообщение об ошибке:
"При чтении из читателя JSON обнаружен неожиданный узел 'PrimitiveValue'. Ожидался узел 'StartArray'."
Я думаю, что та же проблема есть и в C #: Ошибка получения неверного запроса при обновлении категории электронной почты с помощью Office 365 API и HttpClient в C #
Когда я выполняю Get in Graph Explorer, каждое appRole отображается так:
{
"allowedMemberTypes": [
"User"
],
"description": "TEST-ALLOWALL",
"displayName": "TEST-ALLOWALL",
"id": "00000000-0000-0000-0000-00000000",
"isEnabled": true,
"origin": "ServicePrincipal",
"value": "ARNROLEVALUE"
},
Когда я делаю Invoke-RestMethod, а затем ConvertTo-Json, каждое appRole отображается так:
{
"allowedMemberTypes": "User",
"description": "TEST-ALLOWALL",
"displayName": "TEST-ALLOWALL",
"id": "00000000-0000-0000-0000-00000000",
"isEnabled": true,
"origin": "ServicePrincipal",
"value": "ARNROLEVALUE"
},
Как я могу убедиться, что Invoke-RestMethod сохраняет тип значения allowMemberTypes в виде массива / списка типа ["User"] вместо значения "User"?
И как я могу сделать свое собственное значение PSCustomObject allowMembertypes и массив списков, чтобы я мог добавить его к субъекту службы?
Это код, который я использую
$apiUrl = 'https://graph.microsoft.com/beta/servicePrincipals/000000-0000-0000-0000-00000000000'
$Data = Invoke-RestMethod -Headers $graphAPIReqHeader -Uri $apiUrl -Method Get
$obj = New-Object -TypeName PSObject
$obj | Add-Member -MemberType NoteProperty -Name allowedMemberTypes -Value "User"
$obj | Add-Member -MemberType NoteProperty -Name description -Value $RoleName
$obj | Add-Member -MemberType NoteProperty -Name displayName -value $RoleName
$obj | Add-Member -MemberType NoteProperty -Name id -value $Id
$obj | Add-Member -MemberType NoteProperty -Name isEnabled -value "true"
$obj | Add-Member -MemberType NoteProperty -Name origin -value "ServicePrincipal"
$obj | Add-Member -MemberType NoteProperty -Name value -value $Value
$Data.appRoles += $obj
$NewJson = $Data | ConvertTo-Json
$NewData = Invoke-RestMethod -Headers $graphAPIReqHeader -Uri $apiUrl -Body $NewJson -Method Patch -ContentType 'application/json'