Windows PowerShell 中 wget 的本机替代品?

Windows PowerShell 中 wget 的本机替代品?

我知道我可以下载并安装上述库(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

注意:

  • wgetInvoke-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

如果你只需要检索文件,你可以使用下载文件方法网页客户端目的:

$client = New-Object System.Net.WebClient
$client.DownloadFile($url, $path)

其中$url是表示文件 URL 的字符串,$path表示文件将保存到的本地路径。

注意$path必须包含文件名;不能只是一个目录。

答案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不能在这里工作)

相关内容