我想在powershell中使用invoke-restmethod/invoke-webrequest执行REST API,但是当我通过Json输入时失败

问题描述:

我想在使用invoke-restmethod/invoke-webrequest的powershell中执行REST API,但是当我传递Json时失败投入。它与CURL命令一起使用。我想在powershell中使用invoke-restmethod/invoke-webrequest执行REST API,但是当我通过Json输入时失败

卷曲-v --user管理员:密码-H接受:应用/ JSON -H内容类型:应用程序/ JSON -d “@ C:\ DATA \ test.json” -X POST http://10.11.60.88:8081/artifactory/api/distribute

Test.json内容如下

{

"targetRepo" : "ECSDigital_Bintray", 
"packagesRepoPaths" : ["SNOW/org/apache/maven/maven-artifact/3.3.9/maven-artifact-3.3.9.jar"] 

}

我书面方式下面PowerShell和它给了我一系列的错误。

$ USER = “admin” 的

$传球= “密码”

$ secpasswd =的ConvertTo-SecureString的$用户-AsPlainText -Force $名气=新物体System.Management.Automation.PSCredential ($ pass,$ secpasswd)

$ postParams = @ {targetRepo ='SNOW'; packagesRepoPaths ='[“org/apache/maven/maven-artifact/3.3.9/maven-artifact-3.3.9.jar “]'}

Invoke-WebRequest -Uri”http://10.11.60.88:8081/artifactory/api/distribute “-Credential $ cred -Method Post -ContentType”application/json“-Body $ postParams

错误:Invoke-WebRequest:远程服务器返回错误:(400)错误的请求。

我试过一些json输入的组合,但没有去。任何帮助?

我有固定的问题,通过以下方式解决问题的我,有需要的额外的“”

$params = @{ 

uri = $ARTIFACTORY_PROTOCOL+"://"+$ARTIFACTORY_IP+":"+$ARTIFACTORY_PORT+"/artifactory/api/distribute"; 

Method = 'POST'; 

Headers = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$($ARTIFACTORY_USERNAME):$($ARTIFACTORY_PASSWORD)"));"Accept" = 'application/json';"Content-Type" = 'application/json'} 

#body = @{""targetRepo"" : ""$DISTRIBUTION_REPOSITORY"", ""packagesRepoPaths"" : ""$ARTIFACTORY_PATH""} 

} 

$json = "{ 
      ""targetRepo"":""$DISTRIBUTION_REPOSITORY"", 
      ""packagesRepoPaths"":[""$ARTIFACTORY_PATH""] 
     }" 

$var = invoke-restmethod @params -Body $json 
echo $var