jsa*_*nen 330 windows powershell powershell-2.0 powershell-3.0 powershell-4.0
我知道我可以下载并安装上述库(适用于 Windows 的 wget),但我的问题是:
在 Windows PowerShell 中,是否有本机替代wget
?
我只需要wget
使用 HTTP GET 从给定的 URL 检索文件。例如:
wget http://www.google.com/
Run Code Online (Sandbox Code Playgroud)
War*_*mak 290
这是一个简单的 PS 3.0 和更高版本的 one-liner,它可以工作并且不涉及太多 PS barf:
wget http://blog.stackexchange.com/ -OutFile out.html
Run Code Online (Sandbox Code Playgroud)
注意:
wget
是别名 Invoke-WebRequest
在 Windows Server Core 安装上,您需要将其编写为
wget http://blog.stackexchange.com/ -UseBasicParsing -OutFile out.html
Run Code Online (Sandbox Code Playgroud)在 2014 年 9 月 20 日之前,我建议
(wget http://blog.stackexchange.com/).Content >out.html
Run Code Online (Sandbox Code Playgroud)
作为答案。但是,这并不适用于所有情况,因为>
运算符(它是 的别名Out-File
)将输入转换为 Unicode。
如果您使用的是 Windows 7,则需要安装版本 4 或更高版本的 Windows 管理框架。
您可能会发现使用$ProgressPreference = "silentlyContinue"
beforeInvoke-WebRequest
会显着提高大文件的下载速度;此变量控制是否呈现进度 UI。
Tra*_*Guy 193
如果你只需要检索一个文件,你可以使用WebClient对象的DownloadFile方法:
$client = New-Object System.Net.WebClient
$client.DownloadFile($url, $path)
Run Code Online (Sandbox Code Playgroud)
其中$url
是表示文件 URL 的字符串,表示$path
文件将保存到的本地路径。
注意$path
必须包含文件名;它不能只是一个目录。
use*_*514 97
有Invoke-WebRequest
在即将到来的PowerShell版本3:
Invoke-WebRequest http://www.google.com/ -OutFile c:\google.html
Run Code Online (Sandbox Code Playgroud)
Mat*_*les 19
这有点乱,但是有这篇博客文章可以为您提供下载文件的说明。
或者(这是我推荐的),您可以使用 BITS:
Import-Module BitsTransfer
Start-BitsTransfer -source "http://urlToDownload"
Run Code Online (Sandbox Code Playgroud)
它将显示进度并将文件下载到当前目录。
小智 8
如果您的 Windows 足够新(例如版本 1809 或更高版本),则可以使用“真正的”curl。curl 有命令行选项“-O”(大写字母 O;小写字母不会做同样的事情!)选项“-O”,或者“--remote-name”告诉curl,保存的文件获取与 URL 的文件名部分相同的名称。
人们需要将其启动为“curl.exe”,以将其与“Invoke-WebRequest”的别名“curl”区分开来。顺便说一句,它可以在 cmd.exe 中运行,无需更改。
使用与此处另一个答案中相同的示例
curl.exe -O http://demo.mediacore.tv/files/31266.mp4
Run Code Online (Sandbox Code Playgroud)
(该网站不允许我将其添加为评论,因为我显然需要更多的“声誉” - 所以它得到了一个新的答案)
小智 7
PowerShell V4 单线:
(iwr http://blog.stackexchange.com/).Content >index.html`
Run Code Online (Sandbox Code Playgroud)
或者
(iwr http://demo.mediacore.tv/files/31266.mp4).Content >video.mp4
Run Code Online (Sandbox Code Playgroud)
这基本上是Warren 的(很棒)V3 one-liner (谢谢你!) - 只需稍作改动即可使其在 V4 PowerShell 中工作。
Warren 的单线- 只是使用wget
而不是iwr
- 应该仍然适用于V3(至少,我猜;不过没有测试过)。反正。但是当尝试在V4 PowerShell 中执行它时(正如我所尝试的那样),您会看到 PowerShell 无法解析wget
为有效的 cmdlet/程序。
对于那些感兴趣的人,那就是 - 正如我从Bob 的评论中对接受的答案的回复 (谢谢,伙计!) - 因为从 PowerShell V4 开始,wget
并且curl
别名为Invoke-WebRequest
,iwr
默认设置为。因此,wget
无法解决(以及curl
无法在这里工作)。
归档时间: |
|
查看次数: |
511756 次 |
最近记录: |