Я понимаю, что для некоторых людей это, наверное, досадно просто, и мне не хватает чего-то очевидного, но у меня возникают проблемы при попытке встроить строку в запрос PowerShell MS Graph API (предположим, весь код для токена авторизации и т. Д.) работает).
Этот образец работает:
$intuneDeviceId = 'deadbeef-1234-1234-1234-deadbeef1234'
$deviceCategoryReqBody = '{"@odata.id":"https://graph.microsoft.com/beta/deviceManagement/deviceCategories/98769876-9876-9876-9876-9876543210"}'
$patchDeviceReqBody = '{}'
#calling the PUT method to update device category for that specific device
Invoke-RestMethod -Uri "https://graph.microsoft.com/beta/deviceManagement/managedDevices/$intuneDeviceId/deviceCategory/`$ref" -Headers $authToken -Method Put -Body $deviceCategoryReqBody
Invoke-RestMethod -Uri "https://graph.microsoft.com/beta/deviceManagement/managedDevices/$intuneDeviceId" -Headers $authToken -Method Patch -Body $patchDeviceReqBody
Это работает, как и ожидалось, для одного устройства и одной категории устройств, но я пытаюсь создать модуль, который можно вызывать с параметрами для идентификатора устройства и идентификатора категории устройства.
Что не работает, так это попытка заменить жестко закодированные GUID строками из моих параметров; Я просто не могу построить рабочую строку в операторе odata:
param([string] $intuneDeviceId,
[string] $DeviceCategoryID,
[string] $User)
{ ... } # cutting out all the un-needed auth code stuff to keep this short
$devicereqput = "https://graph.microsoft.com/beta/deviceManagement/deviceCategories/$($DeviceCategoryID)"
$deviceCategoryReqBody = '{"@odata.id":"https://graph.microsoft.com/beta/deviceManagement/deviceCategories/$($DeviceCategoryID)"}' #update the deviceCateg id
$patchDeviceReqBody = '{}'
Invoke-RestMethod -Uri "https://graph.microsoft.com/beta/deviceManagement/managedDevices/$intuneDeviceId/deviceCategory/`$ref" -Headers $authToken -Method Put -Body $deviceCategoryReqBody
Invoke-RestMethod -Uri "https://graph.microsoft.com/beta/deviceManagement/managedDevices/$intuneDeviceId" -Headers $authToken -Method Patch -Body $patchDeviceReqBody
Это терпит неудачу, и проверка строк в этот момент показывает, что строка $devicecategoryreqbody
, которую я использую в операторе OData, показывает URL с литералом "$devicecategoryID"
в конце вместо значения этой строки.