在 PowerShell 中运行 Curl 命令

Migel Hewage Nimesha 2022年12月21日 2022年5月16日
在 PowerShell 中运行 Curl 命令

Windows 操作系统支持许多在自动化中非常有用的命令行工具。curl 是这些有用的工具之一,可用于通过任何受支持的协议(如 HTTP、HTTPS、FTP、FTPS、SMTP 等)向服务器发出请求或向服务器发出请求。这个命令行工具支持一些 FTP 上传、代理支持、恢复传输和有限带宽等附加功能。

从 windows 官方版本 1804 开始,curl 已添加到其工具链中。你可以通过打开 Windows 命令提示符并运行以下命令来检查这一点。

curl --version

输出:

curl 7.55.1 (windows)

输出可能会根据你的 curl 安装而更改。

Windows PowerShell 中的 curl

在 Windows PowerShell 中,你必须以与 Windows 命令提示符稍有不同的方式使用 curl 命令。因为 curl 命令被映射为 Invoke-WebRequest cmdlet 的别名。你可以通过在 PowerShell 窗口中运行以下命令来验证这一点。

Get-Alias -Name curl

输出:

CommandType		Name						Version		Source
-----------		----						-------		------
Alias			curl -> Invoke-WebRequest

所有这些命令都将在 PowerShell 命令执行过程中得到解决。通常,别名具有最高优先级。因此,你应该直接在 PowerShell 中使用 curl.exe 可执行文件,而不是 curl。你可以使用 Get-Command cmdlet 查看这两个命令如何在运行时解析。

Get-Command curl

输出:

CommandType		Name						Version		Source
-----------		----						-------		------
Alias			curl -> Invoke-WebRequest
Get-Command curl.exe

输出:

CommandType		Name						Version		Source
-----------		----						-------		------
Application		curl.exe					7.55.1.0	C:\Windows\system32\curl.exe

结论是,如果你需要在 PowerShell 中使用 curl(与 Windows 命令提示符相同),则需要直接调用 curl 可执行文件(curl.exe)。否则,你应该坚持使用 PowerShell curl 别名,该别名在后台解析为 Invoke-WebRequest cmdlet。

PowerShell 中的 curl 语法

curl.exe [options] <url>

你可以运行以下命令以获取有关 curl 命令及其选项(例如 -a-C 等)的更多信息…

curl.exe --help

输出:

Usage: curl [options...] <url>

-a, --append		Append to target file when uploading
.
.
.
-C, --continue-at	<offset> Resumed transfer offest

示例场景

显示作为响应返回的 HTML 网页。

curl.exe https://www.google.com

显示响应、请求标头和响应标头。

curl.exe -v https://www.google.com

显示标题信息。

curl.exe -I https://www.google.com

将标头信息保存到名为 file1.txt 的文件中。

curl.exe -I https://www.google.com -o file1.txt
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

相关文章 - PowerShell Curl