如何在PowerShell中使用curl命令?

如何在PowerShell中使用curl命令?,powershell,curl,jenkins,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" $

我在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 curl.exe:curl:未指定URL! 第3行字符:1 +&$CURLEXE$CurlArgument + ~~~~~~~~~~~~~~~~~~~~~~~~ +CategoryInfo:NotSpecified:(curl:未指定URL!:String)[],RemoteException +FullyQualifiedErrorId:NativeCommandError curl:有关更多信息,请尝试“curl--help”或“curl--manual”


在Powershell 3.0及更高版本中,有Invoke WebRequest和Invoke RestMethod。Curl实际上是PoSH中invokewebrequest的别名。我认为使用本机Powershell比curl更合适,但这取决于您:)

调用WebRequest MSDN文档如下:

调用RestMethod MSDN文档如下:

或另一个选项,您可以按如下方式调用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命令curl.exe

另一个选项是使用
Invoke WebRequest

在PowerShell中查看和删除aliaes

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


我希望这会有所帮助。

对不起,我没有任何使用curl的经验,但是为什么不使用内置的PowerShell
调用WebRequest
cdmlet?@MartinBrandl,我不知道,我会检查一下,然后告诉你。我收到以下错误信息。+CategoryInfo:NotSpecified:(%Total%…Time Current:String)[],RemoteException+FullyQualifiedErrorId:NativeCommanderRor这是
curl
状态输出。添加参数
-s
以抑制它。$CurlArgument='-s','-u','xxx@gmail.com:yyyy'、'-X'、'-POST'、'-data',“content=success”在使用
content-type:multipart/form-data
:)时,比尝试在PowerShell中使用
Invoke-RestMethod
容易得多。幸运的是,Invoke\u WebRequest在您可以使用curl做的事情列表中甚至没有接近curl。Simple
--verbose
标志不可用,无法查看有关TLS连接、原始http请求和响应的详细信息。我遗漏了什么吗?非常有用,谢谢!有时,我们习惯于以一种特定的方式做事,而忘记了寻找替代品。
> curl '-u', 'xxx@gmail.com:yyyy',
 '-X', 'POST',
 'https://xxx.bitbucket.org/1.0/repositories/abcd/efg/pull-requests/2229/comments',                
 '--data', 'content=success'