前述のライブラリ(wget for Windows)をダウンロードしてインストールできることは知っていますが、私の質問はこれです
Windows PowerShellでは、wget
のネイティブな代替手段はありますか?
HTTP GETで与えられたURLからファイルを取得するためには、単純にwget
が必要です。例えば
wget http://www.google.com/
312 jsalonen 2011-11-28
ここにPS3.0以降の簡単なワンライナーがあって、それが効いてPSのバーフがあまり絡まない
wget http://blog.stackexchange.com/ -OutFile out.html
Note that:
wget
はInvoke-WebRequest
のエイリアスです- Invoke-WebRequest は HtmlWebResponseObject を返しますが、これにはリンクや画像、フォーム、InputFields などの HTML 解析に便利なプロパティがたくさん含まれています
- ファイルの内容はディスクに書き込む前にメモリに保存されるため、この方法は大容量のファイルをダウンロードするのには不向きです
Windows Server Coreのインストールでは、これをこう書く必要があります
wget http://blog.stackexchange.com/ -UseBasicParsing -OutFile out.html
2014年9月20日の前に、私は提案しました
(wget http://blog.stackexchange.com/).Content >out.html
を答えにしています。 しかし、
>
演算子(これはOut-File
のエイリアスです)は入力をUnicodeに変換するので、これはすべてのケースでは動作しません
Windows 7をお使いの場合は、Windows Management Frameworkのバージョン4以降をインストールする必要があります
$ProgressPreference = "silentlyContinue"
をInvoke-WebRequest
の前に行うことで、大きなファイルのダウンロード速度が大幅に改善されることがわかります; この変数はプログレスUIがレンダリングされるかどうかを制御します
267 Warren Rumak 2013-12-26
ファイルを取得するだけなら、DownloadFile オブジェクトの WebClient メソッドを使うことができます
$client = New-Object System.Net.WebClient
$client.DownloadFile($url, $path)
ここで、$url
はファイルのURLを表す文字列、$path
はファイルが保存されるローカルパスを表します
$path
はファイル名を含まなければならないことに注意してください
188 Traveling Tech Guy 2011-11-28
今後のPowerShellバージョン3にはInvoke-WebRequest
があります
Invoke-WebRequest http://www.google.com/ -OutFile c:\google.html
92 user4514 2012-08-10
ちょっとごちゃごちゃしていますが、このブログ記事にファイルのダウンロード方法が書いてあります
あるいは(これは私がお勧めする方法の一つですが)bitsを使うこともできます
Import-Module BitsTransfer
Start-BitsTransfer -source "http://urlToDownload"
進行状況が表示され、現在のディレクトリにファイルをダウンロードします
19 Matthew Steeples 2011-11-28
PowerShell V4 ワンライナー
(iwr http://blog.stackexchange.com/).Content >index.html`
or
(iwr http://demo.mediacore.tv/files/31266.mp4).Content >video.mp4
これは基本的には Warren の (素晴らしい) V3 のワンライナー (これに感謝します!) – V4 PowerShell で動作するようにほんの少し変更を加えたものです
Warren のワンライナー – iwr
ではなく wget
を使っているだけですが、V3 でも動作するはずです (少なくとも、私はそう思っています。)とにかく。しかし、(私が試したように) V4 の PowerShell で実行しようとすると、PowerShell が wget
を有効な cmdlet/program として解決するのに失敗しているのがわかります
興味のある方のために、それは – Bob のコメントから 受け入れられた回答 (ありがとうございます!) への返信で拾ったように – PowerShell V4 では、wget
と curl
は Invoke-WebRequest
にエイリアスされており、デフォルトでは iwr
に設定されています。したがって、wget
は解決できません (同様に curl
もここでは動作しません)
7 eyecatchUp 2014-05-25
ダウンロードする前に短いURLを解決するPowerShell関数を紹介します
function Get-FileFromUri {
param(
[parameter(Mandatory=$true, Position=0, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)]
[string]
[Alias('Uri')]
$Url,
[parameter(Mandatory=$false, Position=1)]
[string]
[Alias('Folder')]
$FolderPath
)
process {
try {
# resolve short URLs
$req = [System.Net.HttpWebRequest]::Create($Url)
$req.Method = "HEAD"
$response = $req.GetResponse()
$fUri = $response.ResponseUri
$filename = [System.IO.Path]::GetFileName($fUri.LocalPath);
$response.Close()
# download file
$destination = (Get-Item -Path ".\" -Verbose).FullName
if ($FolderPath) { $destination = $FolderPath }
if ($destination.EndsWith('\')) {
$destination += $filename
} else {
$destination += '\' + $filename
}
$webclient = New-Object System.Net.webclient
$webclient.downloadfile($fUri.AbsoluteUri, $destination)
write-host -ForegroundColor DarkGreen "downloaded '$($fUri.AbsoluteUri)' to '$($destination)'"
} catch {
write-host -ForegroundColor DarkRed $_.Exception.Message
}
}
}
このように使用して、現在のフォルダにファイルをダウンロードします
Get-FileFromUri http://example.com/url/of/example/file
または、指定したフォルダにダウンロードします
Get-FileFromUri http://example.com/url/of/example/file C:\example-folder
4 user25986 2014-08-12
以下の関数でURLを取得します
function Get-URLContent ($url, $path) {
if (!$path) {
$path = Join-Path $pwd.Path ([URI]$url).Segments[-1]
}
$wc = New-Object Net.WebClient
$wc.UseDefaultCredentials = $true
$wc.Proxy.Credentials = $wc.Credentials
$wc.DownloadFile($url, $path)
}
Some comments:
- 最後の4行は、認証プロキシの後ろにいる場合にのみ必要です。単純な使い方であれば、
(New-Object Net.WebClient).DownloadFile($url, $path)
で問題ありません - ダウンロードはカレントディレクトリでは行われないので、パスは絶対的なものでなければなりません
if (!$path) {...}
セクションでは、URLで指定された名前を使ってカレントディレクトリにファイルをダウンロードしたいだけの単純なケースを扱います
2 Paul Moore 2014-12-15
お使いの Windows が十分に新しい場合 (バージョン 1809 またはそれ以降)、”本当の” curl が利用可能です。 curl はコマンドライン オプション “-O” (大文字の O; 小さい文字は同じことをしません!) オプション “-O” (代わりに “–リモート名”) は、保存されたファイルが URL のファイル名部分と同じ名前になるように curl に指示します
Invoke-WebRequest “のエイリアス “curl “からそれを識別するために、”curl.exe “としてこれを起動する必要があります。ちなみに、cmd.exeではそのまま動作します
ここでは別の回答と同じ例を使用します
curl.exe -O http://demo.mediacore.tv/files/31266.mp4
(サイトは私がコメントとしてこれを追加することを許可しません、私は明らかにそのためのより多くの “評判 “を必要とするので – それは新しい答えを取得します)
2 Dweia 2019-03-04
Windowsの機能を設定したら、wgetを含むWindows 10のbashシェルを使用します
WindowsにUbuntuのbashシェルをインストールする方法
YouTube.Windows上のUbuntuでBashを実行する!
Windows Subsystem for Linux ドキュメンテーション
1 Miloud Eloumri 2017-09-27
outfile パラメータを指定した Invoke-WebRequest は文字列を想定しているので、ファイル名が数字で始まり、引用符で囲まれていない場合、出力ファイルは作成されません
例えばInvoke-WebRequest -Uri "http://www.google.com/" -outfile "2.pdf"
これは、文字で始まるファイル名には影響しません
0 Zimba 2018-11-27
これでブラウザが初期化されないことを回避できるはずです。パラメータ “-UseBasicParsing” に注意してください
Invoke-WebRequest http://localhost -UseBasicParsing
-1 Joe Healy 2019-04-27