我正在测试一些nodejs服务器代码,并希望使用curl命令测试来自windows power shell的url。有些事情需要注意: 1.我在我的系统中安装了mingw和git bash,并且curl在正常命令提示符和git bash提示符下工作正常。 2.此外,我从curl official web site下载了最新版本的cURL,并将bin目录的路径添加到系统的PATH变量中。
但它似乎对电源外壳没有好处。但是,无论系统中是否存在其他cURL程序或git bash,powershell仍会识别cURL命令。但它没有像我预期的那样工作,例如我尝试了以下命令并且:
Windows PowerShell
Copyright (C) 2013 Microsoft Corporation. All rights reserved.
PS C:\Users\Zobayer Hasan> curl -X GET -i localhost:8080
Invoke-WebRequest : A parameter cannot be found that matches parameter name 'X'.
At line:1 char:6
+ curl -X GET -i localhost:8080
+ ~~
+ CategoryInfo : InvalidArgument: (:) [Invoke-WebRequest], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
PS C:\Users\Zobayer Hasan> curl GET -i localhost:8080
curl : Cannot find drive. A drive with the name 'localhost' does not exist.
At line:1 char:1
+ curl GET -i localhost:8080
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (localhost:String) [Invoke-WebRequest], DriveNotFoundException
+ FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
PS C:\Users\Zobayer Hasan> curl GET -i http://localhost:8080
curl : Cannot find drive. A drive with the name 'http' does not exist.
At line:1 char:1
+ curl GET -i http://localhost:8080
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (http:String) [Invoke-WebRequest], DriveNotFoundException
+ FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
PS C:\Users\Zobayer Hasan>
但是当我在正常的命令提示符下尝试它时,它运行正常:
C:\Users\Zobayer Hasan>curl -X GET -i localhost:8080
HTTP/1.1 200 OK
Date: Wed, 31 Dec 2014 09:35:31 GMT
Connection: keep-alive
Transfer-Encoding: chunked
Server connection was called
C:\Users\Zobayer Hasan>
当我从git bash尝试时,我也得到相同的输出。
我的问题是,如果我希望所有内容在Windows power shell中顺利运行,我还需要做什么?我在网上做了一些搜索,找不到很多有用的资源。此外,我没有任何Windows powershell的经验。通常使用linux作为开发环境。
答案 0 :(得分:14)
您似乎已将curl
作为Ivoke-WebRequest
的别名:
Invoke-WebRequest:找不到匹配参数的参数 名字'X'。
尝试运行remove-item alias:\curl
,看看你现在是否正在调用正确的卷曲。或者,尝试指定绝对路径,即c:\curl\curl.exe ...
。
答案 1 :(得分:2)
自从我更新到PowerShell 4.0后,创建了一个Alias,指向名为curl的Invoke-WebRequest,所以我做的是我将自己的别名添加到我想要使用的curl.exe可执行文件中代替:
set-alias mcurl "C:\cygwin\bin\curl.exe"
Get-Alias curl
CommandType名称ModuleName ----------- ---- ---------- 别名卷曲 - >调用-的WebRequest
Get-Alias mcurl
CommandType名称ModuleName ----------- ---- ---------- Alias mcurl - > curl.exe