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)

カールのインストールに基づいて、出力が変更される場合があります。

Windows PowerShell の curl

Windows PowerShell では、Windows コマンドプロンプトとは少し異なる方法で curl コマンドを使用する必要があります。curl コマンドはエイリアスとして Invoke-WebRequest コマンドレットにマップされているためです。これを確認するには、PowerShell ウィンドウで次のコマンドを実行します。

Get-Alias -Name curl

出力:

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

これらのコマンドはすべて、PowerShell コマンド実行プロセスで解決されます。通常、エイリアスの優先度が最も高くなります。したがって、curl ではなく、PowerShell で直接 curl.exe 実行可能ファイルを使用する必要があります。Get-Command コマンドレットを使用して、これら 2つのコマンドが実行時にどのように解決されるかを確認できます。

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)を直接呼び出す必要があります。それ以外の場合は、内部で Invoke-WebRequest コマンドレットに解決される PowerShell curl エイリアスに固執する必要があります。

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 Web ページの戻り値を応答として表示します。

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.