使用PowerShell中的curl
命令通过Jenkins作业在位桶请求页面中发布评论。我使用下面的PowerShell命令来执行curl
命令,但是我收到了下面提到的错误。有人可以帮我解决这个问题吗?
$CurlArgument="-u xxx@gmail.com:yyyy -X POST https://xxx.bitbucket.org/1.0/repositories/abcd/efg/pull-requests/2229/comments --data content=success"
$CURLEXE='C:\Program Files\Git\mingw64\bin\curl.exe'
& $CURLEXE $CurlArgument
错误详情:
curl.exe : curl: no URL specified! At line:3 char:1 + & $CURLEXE $CurlArgument + ~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (curl: no URL specified!:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError curl: try 'curl --help' or 'curl --manual' for more information
答案 0 :(得分:6)
在Powershell 3.0及更高版本中,有一个Invoke-WebRequest和Invoke-RestMethod。 Curl实际上是PoSH中Invoke-WebRequest的别名。我认为使用原生Powershell会比curl更合适,但这取决于你:)。
Invoke-WebRequest MSDN文档在这里: https://technet.microsoft.com/en-us/library/hh849901.aspx?f=255&MSPPError=-2147217396
Invoke-RestMethod MSDN文档在这里: https://technet.microsoft.com/en-us/library/hh849971.aspx?f=255&MSPPError=-2147217396
答案 1 :(得分:5)
使用splatting。
$CurlArgument = '-u', 'xxx@gmail.com:yyyy',
'-X', 'POST',
'https://xxx.bitbucket.org/1.0/repositories/abcd/efg/pull-requests/2229/comments',
'--data', 'content=success'
$CURLEXE = 'C:\Program Files\Git\mingw64\bin\curl.exe'
& $CURLEXE @CurlArgument
答案 2 :(得分:2)
或者另一种选择,您可以使用 splatting 调用 curl.exe,如下所示。
> curl.exe '-u', 'xxx@gmail.com:yyyy',
'-X', 'POST',
'https://xxx.bitbucket.org/1.0/repositories/abcd/efg/pull-requests/2229/comments',
'--data', 'content=success'
使用这个命令知道 curl.exe 在哪里Get-Command curl.exe
其他选项是使用 Invoke-WebRequest
删除别名 curl 命令
在 PowerShell 中查看和删除别名
>Get-Aliases
>Remove-Item alias:curl
然后只运行没有'.exe'的命令
> curl '-u', 'xxx@gmail.com:yyyy',
'-X', 'POST',
'https://xxx.bitbucket.org/1.0/repositories/abcd/efg/pull-requests/2229/comments',
'--data', 'content=success'
我希望这会有所帮助。