【问题标题】:PowerShell Core download file using the URL/headers file name使用 URL/headers 文件名的 PowerShell Core 下载文件
【发布时间】:2019-12-06 18:53:22
【问题描述】:

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

我看到了这个推荐:

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

但是,必须提供文件名似乎不是最理想的。 PowerShell/iwr能否根据URL路径或响应头猜测文件名?

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

【问题讨论】:

标签: powershell


【解决方案1】:

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 的函数。然后,您可以在该重定向 URL 上使用 Split-Path -Leaf 以获取所需的文件名。

【讨论】:

  • 很遗憾,感谢您的回答。 PowerShell 似乎有很多令人头疼的遗漏/奇怪之处,这真的让我感到厌烦。
  • 呃,IMO 给文件命名有点不便。我同意如果它可以尝试猜测名称会很好,但在大多数情况下(对我而言)为了幂等性,我最终会给出文件特定的名称。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-08
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
  • 2016-05-16
相关资源
最近更新 更多