Invoke-ResMethod Rest API

Я впервые обращаюсь сюда.

Я пытаюсь создать скрипт для Ivanti Appsense, используя json code powershell, но столкнулся с проблемой

я продолжаю получать ответное сообщение «запрос недействителен», я надеюсь, что смогу получить некоторую помощь так что в powershell это мой код

$url = "http://server/path/api/ImmediateTask"
$cred = Get-Credential
 
$body = @"
{
   "id":"the ID",
   "operations" = [
      {
         "windowsSettingsGroupDisplayName": "_Active Setup",
         "operation":{
            "liveSettingsDelete":{
               "deleteRegistry": true,
               "deleteFiles": true,
               "preserveArchives": true
            }
         }
      }
"@
 
 
$request = Invoke-RestMethod  -Method post -Credential $cred -Uri $url -Body $body -ContentType "application/json" 
 
$request

однако, когда я запускаю его и использую правильные учетные данные, это мой вывод

Invoke-ResMethod Rest API

🤔 А знаете ли вы, что...
С помощью PowerShell можно выполнять удаленное управление компьютерами и серверами по сети.


28
1

Ответ:

Решено

Это может быть не весь ответ на вашу проблему, но одна из проблем заключается в том, что вы отправляете недопустимый json в API.

Вы можете использовать функции PowerShell для создания строки json программно, а не делать это вручную. Таким образом, PowerShell будет выдавать вам более содержательные сообщения об ошибках, если ваш синтаксис неверен, а не ждать, пока API выдаст вам общее сообщение «Произошла ошибка»:

$data = [ordered] @{
    "id"         = "the ID"
    "operations" = @(
        [ordered] @{
            "windowsSettingsGroupDisplayName" = "_Active Setup"
            "operation"                       = [ordered] @{
                "liveSettingsDelete" =  [ordered] @{
                    "deleteRegistry"   = $true
                    "deleteFiles"      = $true
                    "preserveArchives" = $true
                }
            }
        }
    )
};

$json = ConvertTo-Json $data -Depth 99;

write-host $json
#{
#  "id": "the ID",
#  "operations": [
#    {
#      "windowsSettingsGroupDisplayName": "_Active Setup",
#      "operation": {
#        "liveSettingsDelete": {
#          "deleteRegistry": true,
#          "deleteFiles": true,
#          "preserveArchives": true
#        }
#      }
#    }
#  ]
#}

$data в основном создает вложенную структуру хеш-таблицы, о которой PowerShell (и ваша IDE) предупредит вас, если у вас отсутствуют скобки, незакрытые кавычки и т. д.

ConvertTo-Json преобразует этот структурированный объект в строку json.

После этого вы все еще можете получать ошибки от своего API, но, по крайней мере, вы будете знать, что ваш json действителен.