在 PowerShell 中執行 Curl 命令

Migel Hewage Nimesha 2022年12月21日
在 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