如何通过PowerShell将附件上传到JIRA问题?

时间:2015-07-28 19:04:26

标签: powershell curl jira attachment

我一直在网上搜索一段时间,但我没有找到一个可靠的答案(尽管有很多部分答案)。我仍然无能为力。

我试图编写一个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。

任何人对此有任何想法?谢谢!

2 个答案:

答案 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交谈时,我不需要它。