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