关于如何使用PowerShell下载文件,有几个问题浮在脑后。我正在使用PowerShell核心,所以我不能再使用我最喜欢的方法了:Start-BitsTransfer。
我认为这是建议:
Invoke-WebRequest URL -OutFile c:\file.ext但是,必须给出文件名似乎不太理想。PowerShell/iwr可以根据URL路径或响应头猜出文件名吗?
我单独尝试了Invoke-WebRequest URL,但这根本不存储文件。从阅读医生们看,似乎没有选择,对吗?在PowerShell中是否有不同的一行程序来下载使用原始文件名的文件?
发布于 2019-12-06 19:00:48
Invoke-WebRequest没有开关。但是,下面的代码可以在一行中从filepath中提取名称:
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 分享答案在他的评论中定义了一个函数来获得重定向的URL。然后,您可以在重定向URL上使用Split-Path -Leaf来获得所需的文件名。
https://stackoverflow.com/questions/59218767
复制相似问题