webget
WindOSのPowerShellに相当するコマンドはありますか?
Webサイトから公開されているすべてのファイルをダウンロードするスクリプトを作成しようとしています。ファイルを特定のディレクトリ構造(名前、タイプ、サイズによって異なります)に保存する必要があるため、カスタムスクリプトを作成しています。
webget
WindOSのPowerShellに相当するコマンドはありますか?
Webサイトから公開されているすべてのファイルをダウンロードするスクリプトを作成しようとしています。ファイルを特定のディレクトリ構造(名前、タイプ、サイズによって異なります)に保存する必要があるため、カスタムスクリプトを作成しています。
PowerShell v2では、WebClientを使用します。
(New-Object System.Net.WebClient).DownloadFile($url, $localFileName)
v3では、Invoke-WebResquest
コマンドレットは次のとおりです。
Invoke-WebRequest -Uri $url -OutFile $localFileName
別のオプションは、Start-BitsTransfer
コマンドレットを使用することです。
Start-BitsTransfer -Source $source -Destination $destination
PowerShell V3では、新しいコマンドレットInvoke-WebRequest
を使用して、httpまたはhttps要求をWebサイト/サービスに送信できます。例:
$r = Invoke-WebRequest -URI http://www.bing.com?q=how+many+feet+in+a+mile
ただし、ファイルを具体的にダウンロードするには、.NET API WebClient.DownloadFile()を使用するのがおそらく最も簡単です。例:
$remoteUri = "http://upload.wikimedia.org/wikipedia/commons/6/63/Wikipedia-logo.png"
$fileName = "$pwd\logo.png"
$webClient = new-object System.Net.WebClient
$webClient.DownloadFile($remoteUri, $fileName)
PowerShell V2またはV3で機能する「ネイティブ」PowerShellコマンドレットが必要な場合はGet-HttpResource
、PowerShell Community Extensions(PSCX)からお勧めします。PSCXには驚くべきことにオンラインで利用できるAPIがありませんが(拡張機能をインストールする必要があり、通常のPowerShellヘルプを使用して各コマンドを調べることができます)、Get-HttpResourceのAPIをここで見つけることができました。コマンドレットの使用は、次のように簡単です。
$myPage = Get-HttpResource http://blogs.msdn.com/powershell
ただし、コマンドレットには、メディアタイプ、クレデンシャル、エンコーディング、プロキシ、ユーザーエージェントなどを指定できるさまざまなパラメーターがあります。
.NETクラスWebClient
を使用してファイルをダウンロードできます。
PS > $source = "http://www.unsite.fr/untruc.zip"
PS > $destination = "c:\temp\untruc.zip"
PS >
PS >$wc = New-Object System.Net.WebClient
PS >$wc.DownloadFile($source, $destination)