![](/img/trans.png)
[英]Powershell: Using Invoke-WebRequest, How To Use Variable Within JSON?
[英]I am trying to execute REST API within powershell using invoke-restmethod/invoke-webrequest but failed when I pass Json inputs
我正在嘗試使用invoke-restmethod / invoke-webrequest在powershell中執行REST API,但是在傳遞Json輸入時失敗。 它與CURL命令一起使用。
curl -v-用戶admin:密碼-H接受:application / json -H內容類型:application / 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 =“管理員”
$ pass =“密碼”
$ secpasswd = ConvertTo-SecureString $ user -AsPlainText -Force $ cred =新對象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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.