我知道我可以下载并安装上述库(Windows 的 wget),但我的问题是:
在 Windows PowerShell 中,是否有 的本机替代方案wget
?
我wget
只需要使用 HTTP GET 从给定的 URL 检索文件。例如:
wget http://www.google.com/
答案1
这是一个简单的 PS 3.0 和更高版本的单行代码,可以正常工作并且不涉及太多的 PS 代码:
wget http://blog.stackexchange.com/ -OutFile out.html
注意:
wget
是Invoke-WebRequest
- Invoke-WebRequest 返回HtmlWebResponse对象,其中包含许多有用的 HTML 解析属性,如链接、图像、表单、输入字段等,但在本例中,我们仅使用原始内容
- 文件内容在写入磁盘之前存储在内存中,因此这种方法不适合下载大文件
在 Windows Server Core 安装中,你需要将其写为
wget http://blog.stackexchange.com/ -UseBasicParsing -OutFile out.html
在 2014 年 9 月 20 日之前,我建议
(wget http://blog.stackexchange.com/).Content >out.html
作为答案。但是,这并非在所有情况下都有效,因为
>
运算符(的别名Out-File
)会将输入转换为 Unicode。
如果您使用的是 Windows 7,则需要安装 Windows 管理框架 4 或更新版本。
您可能会发现,执行$ProgressPreference = "silentlyContinue"
之前的操作Invoke-WebRequest
将显著提高大文件的下载速度;此变量控制是否呈现进度 UI。
答案2
答案3
有Invoke-WebRequest
在即将推出的 PowerShell 版本 3 中:
Invoke-WebRequest http://www.google.com/ -OutFile c:\google.html
答案4
PowerShell V4 单行命令:
(iwr http://blog.stackexchange.com/).Content >index.html`
或者
(iwr http://demo.mediacore.tv/files/31266.mp4).Content >video.mp4
这基本上Warren 的(很棒的)V3 妙语 (谢谢!)- 只需进行微小的更改即可使其在 V4 PowerShell 中工作。
沃伦的俏皮话- 只是使用wget
而不是iwr
- 仍然适用于V3(至少我猜是这样的;不过我没有测试过)。无论如何。但是当尝试在V4PowerShell(正如我尝试过的),您会看到 PowerShell 无法解析wget
为有效的 cmdlet/程序。
对于那些感兴趣的人,这就是我从鲍勃的评论回复接受的答案 (谢啦!)- 因为从 PowerShell V4 开始,wget
别名curl
为,默认Invoke-WebRequest
设置为iwr
。因此wget
无法解决(以及curl
不能在这里工作)。