回答:
簡単でPS barfを使用しないPS 3.0以降のシンプルなワンライナーを次に示します。
wget http://blog.stackexchange.com/ -OutFile out.html
ご了承ください:
wget
はのエイリアスです Invoke-WebRequest
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を使用している場合は、バージョン4以降のWindows Management Frameworkをインストールする必要があります。
$ProgressPreference = "silentlyContinue"
以前の操作を行うと、Invoke-WebRequest
大きなファイルのダウンロード速度が大幅に向上する場合があります。この変数は、進行状況UIがレンダリングされるかどうかを制御します。
ファイルを取得するだけの場合は、WebClientオブジェクトのDownloadFileメソッドを使用できます。
$client = New-Object System.Net.WebClient
$client.DownloadFile($url, $path)
where $url
は、ファイルのURLを表す文字列であり$path
、ファイルが保存されるローカルパスを表します。
$path
ファイル名を含める必要があることに注意してください。単なるディレクトリにすることはできません。
(new-object System.Net.WebClient).DownloadFile( '$url, $path)
た中で最高の対応であるため、1行の形式で書き直すことができるようwget
です。ありがとう!
$client.DownloadFile( "http://blog.stackexchange.com/", "c:/temp2/_Download.html")
(new-object System.Net.WebClient).DownloadData($url) | Out-Null
ありInvoke-WebRequest
、今後のPowerShellのバージョン3で:
Invoke-WebRequest http://www.google.com/ -OutFile c:\google.html
dd
...のすべての優雅さ
-Outfile
だけを使用できる場合、パラメーターは無関係であるように見えます。>
>>
wget
:)
wget
とcurl
にaliastedされているInvoke-WebRequest
(iwr
デフォルト):D
少し面倒ですが、ファイルをダウンロードするための指示を提供するこのブログ投稿があります。
または、BITSを使用できます(これがお勧めです)。
Import-Module BitsTransfer
Start-BitsTransfer -source "http://urlToDownload"
進行状況が表示され、ファイルが現在のディレクトリにダウンロードされます。
Start-BitsTransfer : Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
です。私は困惑しています:|
PowerShell V4ワンライナー:
(iwr http://blog.stackexchange.com/).Content >index.html`
または
(iwr http://demo.mediacore.tv/files/31266.mp4).Content >video.mp4
これは基本的にWarrenの(素晴らしい)V3ワンライナーです (これに感謝します!) -V4 PowerShellで動作するようにわずかな変更を加えています。
ウォーレンのワンライナー -単に使用するのwget
ではなくiwr
-は、V3でも動作するはずです(少なくとも、私は推測しますが、テストしませんでした)。とにかく。ただし、V4 PowerShell で実行しようとすると(私が試したように)、PowerShell wget
が有効なコマンドレット/プログラムとして解決できないことがわかります。
私はから拾って-興味のある方のために、つまり、ボブさんのコメントに返信して受け入れ答え (おかげで、男!) -ためのPowerShell V4のように、wget
とcurl
にエイリアスさInvoke-WebRequest
に設定され、iwr
デフォルトで。したがって、wget
解決することはできません(同様にcurl
ここでも機能しません)。
以下は、ファイルをダウンロードする前に短い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
次の関数は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)
}
コメント:
(New-Object Net.WebClient).DownloadFile($url, $path)
正常に動作します。if (!$path) {...}
セクションでは、URLで指定された名前を使用して現在のディレクトリにファイルをダウンロードするだけの単純なケースを処理します。Windows機能がセットアップされたら、wgetを含むWindows 10 bashシェルを使用します。
Ubuntu bashシェルをWindowsにインストールする方法:
Windowsが十分に新しい場合(バージョン1809以降など)、「実際の」カールが利用可能です。curlにはコマンドラインオプション「-O」があります(大文字のO、小文字でも同じことはできません!)オプション「-O」、または「--remote-name」は、保存されたファイルがURLのファイル名部分と同じ名前。
「Invoke-WebRequest」のエイリアス「curl」と区別するために、これを「curl.exe」として起動する必要があります。ちなみに、変更なしでcmd.exeで機能します。
ここで別の答えと同じ例を使用して
curl.exe -O http://demo.mediacore.tv/files/31266.mp4
(サイトはこれをコメントとして追加することを許可していません。そのためには、より多くの「評判」が必要なようです。そのため、新しい回答が得られます)
-outfileパラメーターを指定したInvoke-WebRequestは文字列を想定しているため、ファイル名が数字で始まり、引用符で囲まれていない場合、出力ファイルは作成されません。
例えば。 Invoke-WebRequest -Uri "http://www.google.com/" -outfile "2.pdf"
これは、文字で始まるファイル名には影響しません。
wget
の別名でありInvoke-WebRequest
、上記と同様、1)