我一直在网上搜索一段时间,但我没有找到一个可靠的答案(尽管有很多部分答案)。我仍然无能为力。
我试图编写一个powershell脚本,使用cURL向JIRA发送附件(还没有找到另一种方法可以开始工作)。 我的cURL命令是:
C:\opt\curl\curl.exe -u user:pa$$word -X POST -H "X-Atlassian-Token: nocheck" -F "file=@C:\opt\attachments\75391_testingPNG.png" http://jira.ourURL.com/rest/api/2/issue/75391/attachments
这在命令行中运行良好。无论何时我试图通过powershell运行它都会爆炸。看起来它应该很容易做到。只想从目录中获取文件并将其发送给JIRA。
任何人对此有任何想法?谢谢!
答案 0 :(得分:1)
我怀疑参数中的字符$和@可能会导致问题(如果你正在使用的话)。尝试使用反引号符号转义它们。
要使用指定的参数启动curl.exe,请尝试以下命令:
Start-Process C:\opt\curl\curl.exe -argumentList "-u", "user:pa`$`$Word", "-X", "POST", "-H", "`"X-Atlassian-Token: nocheck`"", "-F", "`"file=`@C:\opt\attachments\75391_testingPNG.png`"", "http://jira.ourURL.com/rest/api/2/issue/75391/attachments"
基本上,这意味着在命令提示符中将参数与空格分开的位置,您将每个参数作为powershell字符串Array中的元素发送,并将其用作Start-Process的-argumentlist参数中的值。 / p>
答案 1 :(得分:1)
如果你正在使用PowerShell 3+,你可以使用本机方法Invoke-RestMethod
与JIRA交谈,而不必担心转义字符以转出命令:
# Build a basic auth header:
$headers = @{
'Authorization' = "Basic $([System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $UserName, $Password))))"
'X-Atlassian-Token' = 'nocheck'
}
Invoke-RestMethod -Uri "http://jira.ourURL.com/rest/api/2/issue/75391/attachments" -Method Post -InFile "C:\opt\attachments\75391_testingPNG.png" -ContentType "multipart/form-data" -Headers $headers
我实际上不确定你添加的nocheck
标题是做什么的;在通过REST与JIRA交谈时,我不需要它。