你的命令在我的系统上运行正常(Windows-7 SP1 x64)。作为普通用户和管理员都可以运行...(不过作为管理员可能有风险)。我测试了Powershell的x86和x64版本。
算法 哈希值 路径
--------- ---- --------------------
SHA256 A99192624C502AF0BF635D1186AC6ECAD613F0E4A48F5BA8D47B6E261C204908 C:\Temp\scratch\100MB-newark.bin
SHA1 79105A819B8A0FB67DDCDEADC8E47C7F59DB8677 C:\Temp\scratch\100MB-newark.bin
MD5 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()
}
或许在那个管道中加入一个测量命令会更有用,以提供速度。