2014/07/03

メモ: Windows のコマンド プロンプトで wget のようなこと (ツール不使用)

Windows のコマンド プロンプトしか利用できない環境でインターネットからバイナリ ファイルをダウンロードする方法のメモ。自分用のメモですが、参考になれば...

要は、Server Core や Hyper-V Server、システム回復環境(Windows RE)、Windows PEなどで、特別なツールは使用せずに UNIX や Linux の wget のようなことをしたいってこと。※本当は、Windows RE や Windows PE (カスタマイズなしの) でやりたかったんですけど、そちらは断念。

Windows PowerShell が利用できる場合...

$webclient = new-object System.Net.WebClient
$webclient.DownloadFile("<URL>","<FilePath>")

※コマンド プロンプトで Windows PowerShell のシェルを開始するには...
%Windir%\System32\WindowsPowerShell\v1.0\powershell.exe

※システム修復環境(Windows RE)のコマンド プロンプトからは Windows PowerShell は使用できません。Windows PE 4.0 からはオプションで Windows PowerShell がサポートされましたが(WinPE-PowerShell)、利用するにはカスタマイズした Windows PE イメージの作成が必要。
WinPE のいまむかし (日本語入力、PowerShell、Disk2vhd も) (2014/03/14)

Windows PowerShell (>=3.0) が利用できる場合...

Invoke-WebRequest <URL> -OutFile <FilePath>

※Invoke-WebRequest の部分を wget と書いても OK。wget は Invoke-WebRequest のエイリアスになってる。
Windows Script Host (WSH) で ...

cscript mywget.vbs <URL> <FilePath>

mywget.vbs はメモ帳 (notepad.exe) でその場でがんばって書く。

mywget.vbs のサンプル コード (他の方のサンプルから無断拝借したコードがベースです)


※システム修復環境 (Windows RE) や素の Windows PE では ADODB.Stream も使えませんでした。Windows PE のイメージをカスタマイズして WinPE-MDAC を入れればなんとかなるのかなぁ?と思う。試していない。

残念無念。 


7/10 追記) 
WinPE-MDAC や WinPE-PowerShell を入れてカスタマイズした Windows PE 4.0 以降のイメージなら、ADODB.Stream も、PowerShell (Invoke-WebRequest) も使えました。でも、これだと“ツール不使用”のポリシーから外れてしまう。

WinPE: パッケージの追加 (オプション コンポーネント リファレンス)
[URL] http://msdn.microsoft.com/ja-jp/library/hh824926.aspx


BITS administration utility (BITSAdmin.exe) で...

BITSAdmin /transfer "適当なジョブ名" <URL> <FilePath>

※ BITSAdmin は BITS サービス (Background Intelligent Transfer Service) に依存するため Windows PE や Windows RE では使えません。また、将来の Windows バージョンには搭載されないかもしれない、非推奨になった機能です。(→ Windows PowerShell の Start-BitsTransfer のほうを使うようにしてねってことみたい)
昔の PE だと Firefox (ローカルにインストールされているやつを無理やり)を動かしたりできた記憶があるのですが、今の PE だと“前提サブシステムほにゃらら”でダメみたい。Forefox Portable もダメみたい。←ダメなのは x64 版の PE だからかも。

2 件のコメント:

匿名 さんのコメント...

PowerShellでスマートにダウンロードする(BITS)・その2・フォアグラウンド

Start-BitsTransfeというCommandletがあるわけですが、本文のオペレーション例を記述なさったのはどういったケースでアドバンテージがあったわけでしょうか?

山市 良 さんのコメント...

個人的なメモですので、何もありません。

あえて言うなら、元々、Windows回復環境やWindows PEのコマンドプロンプトで何とかしたいと考えていたので、BITSは頭にありませんでした。Windows PEにはBITSサービスは無いと思います。あと、Windows PEでPowerShellが使えるのは、Windows PE 4.0で作るカスタムイメージだけ。

非推奨になった BITSAdmin に対応する Start-BITSTransefer のことは知りませんでした。 メモの補強になります。情報ありがとうございまし