Invoke-WebRequest
Windows PowerShellで管理者として。
次のコマンドを実行すると:Invoke-WebRequest http://speedtest.newark.linode.com/100MB-newark.bin -OutFile $env:TEMP
( ここで推奨 )、Access to Path is Denied
(下の画像を参照)。
私が試したことはうまくいきませんでした:
Read-Only
Temp
フォルダのプロパティで権限を設定します。$env:TEMP
からC:\
。エラーは、テストしたすべてのオペレーティングシステムで一貫しています。
OutFileパラメーターがTEMPという名前のファイルをAppData/Localフォルダーに作成しようとしているが、すでにTEMPという名前のディレクトリがあり、名前の競合があるため、アクセスが拒否されているようです。コマンドの実行中に同じエラーが発生したので、ファイル名を追加すると機能しました。下記参照:
Invoke-WebRequest http://speedtest.newark.linode.com/100MB-newark.bin -OutFile $env:TEMP\100MB-newark.bin
あなたのコマンドは私のシステム(Windows-7 SP1 x64)で動作します。通常のユーザーおよび管理者として実行すると、どちらも機能します...(ただし、管理者としてはリスクが高いようです)。 Powershellのx86バージョンとx64バージョンの両方をテストしました
アルゴリズムハッシュパス --------- ---- -------------------- SHA256 A99192624C502AF0BF635D1186AC6ECAD613F0E4A48F5BA8D47B6E261C204908 C:\ Temp\scratch\100MB-newark.bin SHA1 79105A819B8A0FB67DDCDEADC8E.MB.MB.MB.MB.MB.Cmp\.bin [MB_C。\ In_C。\ In_C。\ In_C。\ In_C。\\ [C] \\。\ [C] \\ [\] 5F293997D8F256F9C6880272E0773429 C:\ Temp\scratch\100MB-newark.bin
これは、私が使用した気の利いた小さなGet-Webfile関数です:$ PROFILEに追加するか、。sourceを使用します。)
Function Get-Webfile ($url)
{
$dest=(Join-Path $pwd.Path $url.SubString($url.LastIndexOf('/')))
Write-Host "Downloading $url`n" -ForegroundColor DarkGreen;
$uri=New-Object "System.Uri" "$url"
$request=[System.Net.HttpWebRequest]::Create($uri)
$request.set_Timeout(5000)
$response=$request.GetResponse()
$totalLength=[System.Math]::Floor($response.get_ContentLength()/1024)
$length=$response.get_ContentLength()
$responseStream=$response.GetResponseStream()
$destStream=New-Object -TypeName System.IO.FileStream -ArgumentList $dest, Create
$buffer=New-Object byte[] 10KB
$count=$responseStream.Read($buffer,0,$buffer.length)
$downloadedBytes=$count
while ($count -gt 0)
{
[System.Console]::CursorLeft=0
[System.Console]::Write("Downloaded {0}K of {1}K ({2}%)", [System.Math]::Floor($downloadedBytes/1024), $totalLength, [System.Math]::Round(($downloadedBytes / $length) * 100,0))
$destStream.Write($buffer, 0, $count)
$count=$responseStream.Read($buffer,0,$buffer.length)
$downloadedBytes+=$count
}
Write-Host ""
Write-Host "`nDownload of `"$dest`" finished." -ForegroundColor DarkGreen;
$destStream.Flush()
$destStream.Close()
$destStream.Dispose()
$responseStream.Dispose()
}
**おそらく、Measure-Commandは、そのパイプラインのどこかで(さらに)速度を提供するのに役立ちます。