PowerShell の curl と同等の
PowerShell には curl
と同等のものはありますか?何か似たような組み込み機能を持っているのか、それともサードパーティのコマンドレットがあるのか?
PowerShell には curl
と同等のものはありますか?何か似たような組み込み機能を持っているのか、それともサードパーティのコマンドレットがあるのか?
PowerShell 3.0には新しいコマンドInvoke-RestMethod
があります:
http://technet.microsoft.com/en-us/library/hh849971.aspx
詳細:
https://discoposse.com/2012/06/30/powershell-invoke-restmethod-putting-the-curl-in-your-shell/
Powershell 5.0 では、それ以前でなければ curl
は Invoke-WebRequest
のエイリアスです。
PS> Get-Alias -Definition Invoke-WebRequest | Format-Table -AutoSize
CommandType Name Version Source
----------- ---- ------- ------
Alias curl -> Invoke-WebRequest
Alias iwr -> Invoke-WebRequest
Alias wget -> Invoke-WebRequest
アンエイリアスコマンドを使用するには …
PS> Invoke-WebRequest -Uri https://localhost:443/
PS> Invoke-WebRequest -Uri https://www.google.com
次のようにリクエストのいくつかのプロパティを返します。またはちょうど内容…
PS> Invoke-WebRequest -Uri https://www.google.com
StatusCode : 200
StatusDescription : OK
Content : <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en-AU"><head><meta content="text/html; charset=UTF-8"
http-equiv="Content-Type"><meta content="/images/branding/googleg/1x/...
RawContent : HTTP/1.1 200 OK
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Vary: Accept-Encoding
等価なaliasedコマンドは…
PS> Invoke-WebRequest -Uri https://www.google.com | Select-Object -ExpandProperty Content
<!doctype html><html itemscope="" itemtype="http://schem[etc ...]
PS> curl -Uri https://www.google.com
PS> curl -Uri https://www.google.com | Select-Object -ExpandProperty Content
…にコマンドを短くすることができるLeveraging Powershellのデフォルトおよび他のaliasesを…しかし、私はそれを推薦しません。冗長なコマンドは、あなたのコードを読むときに他の人の助けになります。
更新:
[ Powershell 6.x “Core” ]の時点では、(https://github.com/PowerShell/PowerShell) curl
は Invoke-WebRequest
のエイリアスではなくなりました (エイリアスの wget
も削除されています)。
PS> curl https://www.google.com
ps> curl https://www.google.com | Select -ExpandProperty Content
Curl は Invoke-WebRequest (Powershell 6.2.3 でテスト済み) のエイリアスではなくなりました (RFC “to remove the aliases curl and wget from the Windows PowerShell” ](https://github.com/PowerShell/PowerShell-RFC/blob/master/X-Rejected/RFC0007-Weak-Aliases.md#powershell-committee-decision) のモーションが拒否されたにもかかわらず。
そのRFCは「wget/curlのエイリアスはすでにPowerShell Coreから削除されていたので、[それらのエイリアスを持つことの問題]はWindows PowerShellに限定されていた」と指摘しています。
@v6ak さんがコメントで指摘されているように、PowerShell (5.0 以下) で Invoke-WebRequest
と curl
を使用すると、次のような問題が発生する可能性があります: サイドバイサイドでインストールされた場合、意図せずに本物の curl や wget を起動してしまいます。新しいエンコーディング
を使用する際には、デフォルトのエンコーディング wget
を利用するために、Powershell の “core” (6.x 以上) をアップグレードすることをお勧めします。しかし、より短い暗黙のコマンド …
PS> Get-Alias -Definition Invoke-WebRequest | Format-Table -AutoSize
CommandType Name Version Source
----------- ---- ------- ------
Alias iwr -> Invoke-WebRequest
… を使う場合でも、utf8NoBOM
でエンコーディングが行われます (これは、例えば、Visual Studio Code で保存されたファイルを開いてステータスバーに “UTF-8” と表示されていることで確認できます)。もちろん、他のエンコーディングが必要な場合は、明示的に代替エンコーディングを設定することができます。
Powershell 5.0 以下では、デフォルトはおろか、007 エンコーディングは利用できませんでした。 PowerShell.Utility, Out-File, Parameters, -Encoding ](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/out-file?view=powershell-6#parameters) - Powershell 6, What’s new, What’s new in Powershell Core 6.x, Breaking changes in Powershell Core 6.0, “Change $OutputEncoding to use UTF-8 NoBOM encoding instead ASCII #5369”
優れたコマンドラインカンフーブログは、彼らがcurl、wgetと関連するPowerShellコマンド
を比較する記事を持っています 一言で言えば:
(New-Object System.Net.WebClient).DownloadString("http://www.example.com/hello-world.html","C:\hello-world.html")
または、Powershell/.Netのあなたのバージョンは、DownloadString
のための2つのパラメータを受け入れない場合:
(New-Object System.Net.WebClient).DownloadString("http://www.example.com/hello-world.html") > "C:\hello-world.html"
また、 Git for Windows をインストールして、パスにGitのbinフォルダを入れます。Git のインストールには、とりわけ curl.exe が含まれています。インストールしたら、%programfiles(x86)%\git\bin
をPATHに置くだけです。そうすれば、Windows のコマンドプロンプトや PowerShell コンソールから curl コマンドが使えるようになります。
ChocolateyでcURLをインストール](http://chocolatey.org/packages/curl)で、PowerShell CLIやcmd
でcurlが利用できるようになります。
このコマンドは PowerShell 3.0 以降の Microsoft.PowerShell.Utility に含まれています。Powershellでテキストファイルに書き込むために$webclient.downloadstringを取得する ](https://stackoverflow.com/q/9365000/55075)も参照してください。