调用 ResMethod Rest API

Invoke-ResMethod Rest API

这是我第一次接触这里。

我正在尝试使用 json code powershell 为 Ivanti Appsense 创建脚本,但我遇到了一个问题

我不断收到 return 消息“请求无效”,我希望能得到一些帮助 所以在 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

但是当我 运行 它并使用正确的凭据时,这是我的输出

这可能不是您问题的全部答案,但一个问题是您将无效的 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 是有效的。