适合从 Invoke-WebRequest 获取结果

时间:2021-02-05 20:02:20

标签: powershell

好的。我是 powershell 的新手,但这让我很伤心。下面的代码从不返回状态代码或状态描述。我什至尝试过尝试并抓住它。我做错了什么?

    $url = "https://download.microsoft.com/download/3/d/c/3dcc9642-d3a0-459c-86fd- 
    128f5a0c3cc5/Windows10Upgrade9252.exe"
    $output = "c:\Temp\upgrade.exe"
    $Result = Invoke-WebRequest -Uri $url -OutFile $output -ErrorAction Stop
    $StatusCode = $Result.StatusCode
    $StatusDescription = $Result.StatusDescription
    Write-Host "       Download Status Code: " $StatusCode
    Write-Host "Download Status Description: " $StatusDescription

1 个答案:

答案 0 :(得分:1)

Invoke-WebRequest 默认返回响应对象。

如果您使用 -OutFile 选项,则响应将保存到给定文件中,并且 cmdlet 不会返回任何内容。因此 $Result 为空,您不会得到任何状态代码。

如果要保存响应对象将响应保存到文件中,则必须使用 -PassThru 开关。在这种情况下,$Result 是一个 WebResponseObject 类型的对象。

对于 Invoke-WebRequest cmdlet,-PassThru 开关仅在使用 -OutFile 选项时有效

Documentation


注意:-PassThru 开关是 cmdlet 的常见模式,通常有很好的文档记录