使用 URL/ header 文件名下载 PowerShell Core 文件

标签 powershell

关于如何使用 PowerShell 下载文件,存在一些问题。我正在使用 PowerShell Core,因此我无法再使用我最喜欢的方法:Start-BitsTransfer

我看到这个推荐:

Invoke-WebRequest URL -OutFile c:\file.ext

但是,必须提供文件名似乎不太理想。 PowerShell/iwr 可以根据 URL 路径或响应 header 猜测文件名吗?

我单独尝试了Invoke-WebRequest URL,但这根本不存储文件。来自阅读the docs看起来可能没有选择,对吗? PowerShell 中是否有不同的单行代码可以使用原始文件名下载文件?

最佳答案

没有 Invoke-WebRequest 的开关。但是,以下代码可以在一行中从文件路径中提取名称:

Invoke-WebRequest $URL -OutFile "C:\$(Split-Path -Leaf $URL)"

Split-Path 将采用路径并返回父容器的完整路径 -Parent参数,或末尾带有 -Leaf 的文件/目录的名称论证。

但是,只有当文件名是 URL 的一部分时,这才有效。例如,如果您有类似 http://server.domain.tld/download.php?id=12345 的内容,输出文件最终将是 download.php?id=12345 。这不是单行,而是@Theo shared an answer在他的评论中定义了一个函数来获取重定向的 URL。然后您可以使用Split-Path -Leaf在该重定向的 URL 上获取所需的文件名。

关于使用 URL/ header 文件名下载 PowerShell Core 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59218767/

相关文章:

powershell - 使用Powershell查找Open Metro应用

xml - powershell XML Writer 嵌套循环

powershell - PowerShell根据文件大小搜索文件

PowerShell 重命名文件名并保留扩展名

powershell - 在 Windows 7 中共享文件夹的批处理文件

powershell - 如何使powershell内联脚本路径识别空格?

powershell - 命令控制台输出 - 到文件。获取 { Windows 过滤平台/Windows 防火墙 } 规则

powershell - 使用 powershell 和 schtasks try catch 失败

c++ - 使用免注册 COM 时 Powershell 无法使用 COM 对象

powershell - Win32Shutdown 一般故障