gpt4 book ai didi

powershell - PowerShell Invoke-WebRequest,如何自动使用原始文件名?

转载 作者:行者123 更新时间:2023-12-03 22:37:32 24 4
gpt4 key购买 nike

如何使用Invoke-WebRequest下载文件,但如何使文件名与通过浏览器下载的文件名相同?如果没有手动指定文件名,我还没有找到一种使-OutFile工作的方法。我对此很满意,涉及其他几行代码。

一个好的解决方案将是:

  • 即使文件名不在请求URL中也可以工作。例如,下载Visual Studio x64远程调试工具的URL为http://go.microsoft.com/fwlink/?LinkId=393217,但下载文件rtools_setup_x64.exe
  • 在写入磁盘之前,不要将整个文件保存到内存中,除非Invoke-WebRequest已经使用-OutFile参数(?)进行了操作

  • 谢谢!

    最佳答案

    对于给定的示例,您将需要获取重定向的URL,其中包括要下载的文件名。您可以使用以下功能来做到这一点:

    Function Get-RedirectedUrl {

    Param (
    [Parameter(Mandatory=$true)]
    [String]$URL
    )

    $request = [System.Net.WebRequest]::Create($url)
    $request.AllowAutoRedirect=$false
    $response=$request.GetResponse()

    If ($response.StatusCode -eq "Found")
    {
    $response.GetResponseHeader("Location")
    }
    }

    然后只需从响应URL的末尾解析文件名即可(System.IO.Path中的GetFileName可以做到):
    $FileName = [System.IO.Path]::GetFileName((Get-RedirectedUrl "http://go.microsoft.com/fwlink/?LinkId=393217"))

    这将留下 $FileName = rtools_setup_x64.exe,您应该可以从那里下载文件。

    关于powershell - PowerShell Invoke-WebRequest,如何自动使用原始文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25125818/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com