如何在PowerShell中使用curl命令?

时间:2016-10-18 10:13:08

标签: powershell curl jenkins

使用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

3 个答案:

答案 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'

我希望这会有所帮助。