powershell 向 AWX

问题描述

我在上周或更长时间里一直在努力从 powershell 发送 rest api 命令以在 AWX 中添加主机(来自 curl 正在工作)。当我发送一个参数是 worki 但我还需要发送变量

$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization","Basic $VfAwxTokenX")
$Headers.Add('Content-Type','application/json')
$body = @{
  name = '$vmname'
  variables = 'test'

}| ConvertTo-Json  
write-output    $body
$response = Invoke-RestMethod 'https://awx/api/v2/inventories/2/hosts/' -Method 'POST' -Headers $headers -UseBasicParsing -Body $body

错误我得到的:

{ "name": "wewewe","variables": "test" } Invoke-RestMethod : {"variables":["Cannot parse as JSON (error: Expecting value: line 1 column 1 (char 0)) or YAML(错误:输入类型 str 不是字典。”]} 在第 32 行 字符:13

  • $response = Invoke-RestMethod 'https://awx/api ... ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~
  • CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod],网络异常
  • FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand

也许任何用户都遇到过这个问题,现在如何克服它?

解决方法

根据我的研究,参数 variables 应该定义为 JSON 或 YAML 格式。详情请参阅hereenter image description here

有关如何调用 API 的更多详细信息,请参阅blog

,

问题很平淡

  variables = 'test' 

如果我放了其他东西然后测试工作:/