curl
PowerShellに相当するものはありますか?同様のビルトイン機能がありますか、サードパーティのコマンドレットがありますか?
curl
PowerShellに相当するものはありますか?同様のビルトイン機能がありますか、サードパーティのコマンドレットがありますか?
回答:
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/
curl
またはwget
Powershellでエイリアスになりました。
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
...またはコンテンツのみ...
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
Powershellのデフォルトと他のエイリアスを活用して、コマンドを
PS> curl https://www.google.com
ps> curl https://www.google.com | Select -ExpandProperty Content
...しかし、私はそれをお勧めしません。詳細なコマンドは、コードを読むときに他の人を助けます。
更新:
以下のようにPowerShellの6.xの「コア」は curl
、もはやの別名ではないInvoke-WebRequest
(別名wget
も除去されます)。代わりにInvoke-WebRequest
直接使用してください。
PS> Get-Alias -Definition Invoke-WebRequest | Format-Table -AutoSize
CommandType Name Version Source
----------- ---- ------- ------
Alias iwr -> Invoke-WebRequest
RFCで「Windows PowerShellからcurlとwgetのエイリアスを削除する」という動きが明らかに拒否されたにもかかわらず、CurlはInvoke-WebRequestのエイリアスではなくなりました(Powershell 6.2.3でテスト済み)。
RFCでは、「wget / curlエイリアスは既にPowerShell Coreから削除されているため、[これらのエイリアスを持つ]問題はWindows PowerShellに限定されていました。」
結論として、Powershellチームはユーザーに「スクリプト内のエイリアスに依存しない」ことを推奨しています。
@ v6akが使用コメントで述べたようにcurl
、およびwget
PowerShellで(5.0以下)の問題であることができる:サイドバイサイドをインストールした場合、意図せずに実際のカールやwgetのを呼び出します。そして、いずれにせよ、混乱を引き起こします。
(および他の多くのテキスト出力コマンド)utf8NoBOM
を使用するときに、デフォルトのエンコーディングを利用するために、Powershell "core"(6.x以上)をアップグレードすることをお勧めしますInvoke-WebRequest
。これを明示的に行っている場合、次のようなことができます。
Invoke-WebRequest `
-Uri https://raw.githubusercontent.com/fancyapps/fancybox/master/dist/jquery.fancybox.min.js `
| Select-Object -ExpandProperty Content `
| Out-File jquery.fancybox.min.js `
-Encoding utf8NoBOM
ただし、より短く、暗黙的なコマンドを使用する場合でも...
Invoke-WebRequest `
-Uri https://raw.githubusercontent.com/fancyapps/fancybox/master/dist/jquery.fancybox.min.js `
-OutFile jquery.fancybox.min.js
...でエンコードutf8NoBOM
が行われます(たとえば、保存したファイルをVisual Studio Codeで開き、ステータスバーの「UTF-8」を確認することで、これを確認できます)。
で保存されたファイルは、utf8NoBOM
さまざまなエコシステムを移動するときの問題が少ない傾向があります。もちろん、他のエンコードが必要な場合は、いくつかの代替を明示的に設定できます。
Powershell 5.0以前utf8NoBOM
では、デフォルトはもちろんのこと、エンコードは使用できませんでした。
詳細:
get-help curl
。が表示さInvoke-WebRequest [-Uri] <Uri> ...
れ、角かっこは[]
省略-Uri
できることを示しています(したがって、暗黙的に呼び出されます)。メインポストで述べたように、一般的に、あなたは明示的にすべきです(あなたまたは他の人が将来あなたのコードを読む予定です)。
[]
get-help
いくつかのバージョンに記載されているen.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form。Extended Backus Naur Formのいくつかのバージョンは、出くわす多くの言語の構文を記述するために使用される可能性が高いため、これを読んだり、ざっと読んだりするのはよいことです。en.wikipedia.org/wiki/…で、括弧[ ...]
はオプションの構文を示していることに気付くでしょう。
優れたCommand Line Kung Fuブログには、 curl、wget、および関連するPowerShellコマンドを比較する投稿があります
手短に:
(New-Object System.Net.WebClient).DownloadString("http://www.example.com/hello-world.html","C:\hello-world.html")
または、Powershell / .Netのバージョンが2つのパラメーターを受け入れない場合DownloadString
:
(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
、パスを入力するだけです。その後、WindowsコマンドプロンプトまたはPowerShellコンソールからcurlコマンドを使用できるようになります。
あなたはできるChocolateyでカールをインストールし、PowerShellのCLIで利用可能なカールを持っていますかcmd
。
このコマンドは機能するはずです:
Invoke-WebRequest -UseBasicParsing -Uri http://example.com/
PowerShell 3.0以降、Microsoft.PowerShell.Utilityの一部です。
参照:$ webclient.downloadstringを取得して、Powershellのテキストファイルに書き込みます。