PowerShellでcurlを使う方法|Invoke-WebRequestとの違いも解説
目次
スポンサードリンク
PowerShellでは、Linuxのように curl コマンドを使うことができます。ただし、シンプルに curl と入力した場合と、curl.exe と入力した場合で動作するコマンドが異なる可能性がある点が注意点です。
curl は PowerShellでは Invoke-WebRequest の「エイリアス」
PowerShellでは、シンプルに curl だけを入力すると、Invoke-WebRequest のエイリアスと認識されることがあります。Get-Command コマンドで curl の実体を調べると、Invoke-WebRequest のエイリアスであることが分かります。
PS C:\Users\username> Get-Command curl
CommandType Name Version Source
----------- ---- ------- ------
Alias curl -> Invoke-WebRequest
一方、本来のcURL(curl.exe)を明示的に指定すると、「C:\Windows\system32\curl.exe」が利用できることが分かります。
PS C:\Users\username> Get-Command curl.exe
CommandType Name Version Source
----------- ---- ------- ------
Application curl.exe 8.12.1.0 C:\Windows\system32\curl.exe
なお、Invoke-WebRequest についても同様に調べると、PowerShell組み込みのユーティリティ機能として提供されていることが分かります。
PS C:\Users\username> Get-Command Invoke-WebRequest
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Invoke-WebRequest 3.1.0.0 Microsoft.PowerShell.Utility
curl.exe と Invoke-WebRequest の違い
curl.exe と Invoke-WebRequest では、出力形式や利用可能な環境が異なります。Linuxライクに curl を利用したい場合は、curl.exe を使った方が良いでしょう。また、PowerShellの各種コマンドと組み合わせて利用したい場合は、Powershell と親和性が高い Invoke-WebRequest も候補になります。
項目 | curl.exe | Invoke-WebRequest |
---|---|---|
出力 | プレーンテキスト(HTML/JSONなど) | .NETオブジェクト(ParsedHtml 等) |
利用可能 | Windows 10以降(curl.exe同梱) | PowerShell 3.0以降 |
機能の豊富さ | 豊富(HTTP/FTP/SSL等) | 比較的シンプル、PowerShellと親和性高い |
JSONとの相性 | 良い(手動で ConvertFrom-Json ) |
出力形式によって扱いやすさが異なる |
まとめ
PowerShellで curl を使う際には、「エイリアス」に注意が必要です。本来の curlを使いたいなら、.exe を明示して利用しましょう。必要に応じて使い分け、PowerShellでのネットワーク操作を快適に行いましょう。
コマンドプロンプトのポケットリファレンス:Windows11対応版
Windows環境で開発やシステム管理を行うエンジニアにとって、コマンドプロンプトの知識は非常に重要なスキルセットです。こちらの書籍は初心者にもわかりやすく網羅的です。手元に置いておきたい一冊です。
PowerShellの基礎を一通り学べるおすすめ書籍