Visual Studio 2008 Beta2日本語版が出たので、PowerShellで任意のURIをローカルに保存するスクリプト(関数)を書きました。
function DownloadInetFile
{
if($args.length -ne 2) {
[System.Console]::WriteLine("引数は url, localfilename を指定してください")
return;
}
[Void][Reflection.Assembly]::LoadWithPartialName("System.Net")
$a = new-object System.net.webclient
$b = new-object system.uri $args[0]
$a.add_DownloadFileCompleted({[System.Console]::WriteLine($b.AbsoluteUri + " ダウンロード終了")})
$a.DownloadFileAsync($b, $args[1])
}
これで
PS>downloadinetfile http://www.exsamples.com/index.html c:\temp\exsamples.html
とかやるとPowerShellがPSInvalidOperationExceptionを出して、クラッシュします。どうもDownloadFileCompetedイベントに割りつけたスクリプトブロックがよくないようですね。staticなメソッド呼び出しをスクリプトブロックに書いちゃダメ?