2014-07-14 71 views
2

我想從powershell腳本內傳遞一個JSON字符串到build.phonegap.com API,使用curl。
phonegap's forum,在Windows機器上運行時,JSON數據必須被格式化爲:Powershell:傳遞json字符串來捲曲

curl.exe -ku [email protected]:mypass -X PUT -d "data={\"password\":"\keypass\"}" https://build.phonegap.com/api/v1/key 


事實上,這並從命令行調用時運行正常。
但是,當我嘗試從PowerShell腳本中調用此引用時,雙引號似乎被刪除。

到目前爲止,我曾嘗試:

  • 把JSON在單引號字符:
 curl.exe -ku [email protected]:mypass -X PUT -d '"data={\"password\":\"keypass\"}"' https://build.phonegap.com/api/v1/key
  • 把JSON在單引號字符,而DOS反斜槓進行轉義:
 curl.exe -ku [email protected]:mypass -X PUT -d '"data={"password":"keypass"}"' https://build.phonegap.com/api/v1/key
  • 把JSON單引號字符串,轉義雙引號和反斜線(DOS風格的反斜線):
 curl.exe -ku [email protected]:mypass -X PUT -d '\"data={\\\"password\\\":\\\"keypass\\\"}\"' https://build.phonegap.com/api/v1/key
  • 把JSON在雙引號字符串,轉義雙引號與PowerShell的反勾字符':
 curl.exe -ku [email protected]:mypass -X PUT -d "`"data={\`"password\`":\`"build*2014`\`"}`"" https://build.phonegap.com/api/v1/key



任何想法如何實現這一目標?

感謝您的時間, 公園

+1

'雙引號似乎被刪除。「你如何斷言? – njzk2

+0

我創建了一個虛擬控制檯應用程序,它只是回顯傳入的參數。 – KoenJ

回答

3

嘗試使用--%運營商把PowerShell的成簡單(啞)參數解析模式:

curl.exe --% -ku [email protected]:mypass -X PUT -d "data={\"password\":"\keypass\"}" https://build.phonegap.com/api/v1/key 

這對於調用具有與PowerShell的參數語法相反的參數語法的exes通常很有用。這確實需要PowerShell V3或更高版本。

+0

感謝您的提示,這確實工作時,硬編碼的用戶,密碼和密鑰。但是,這些值都是PowerShell變量,在使用 - %運算符時不會被解析。 – KoenJ

+0

好吧,我設法通過提供這些參數作爲環境變量,如[這個問題]建議(http://stackoverflow.com/questions/21386643/powershell-call-operator-with-escape-param-not-工作與 - 非爲static)。 – KoenJ

+1

幾年前,我還在這個功能上寫了一篇博文http://rkeithhill.wordpress.com/2012/01/02/powershell-v3-ctp2-provides-better-argument-passing-to-exes/ –

0

將內容類型:

curl -H "Content-Type: application/json" -d '{"password":"keypass"}' https://build.phonegap.com/api/v1/key 
+1

這沒有什麼區別。請注意,從命令行調用該命令時工作正常,所以問題不在傳遞的參數中;它與Powershell和轉義字符有關.. – KoenJ