🙄

PowerShellでInvoke-WebRequestのエラー時レスポンスを確認したいだけだった

2020/10/19に公開
try{
    $a = Invoke-WebRequest "https://example.com/" -Method Get
    $a.RawContent
}catch{
    $r = $_.Exception.Response
    $rs = $r.GetResponseStream()
    $rs.Position = 0
    $sr = [System.IO.StreamReader]::new($rs)
    $res = $sr.ReadToEnd()
    $sr.Close()
    "StatusCode : {0}, Response : {1}" -f $r.StatusCode.Value__ ,$res
}

$_.Exception.Response.GetResponseStream()でStreamを開いて読み込む。
なおPositionを0にしないといけないらしい。

参考:
https://get-powershellblog.blogspot.com/2017/11/powershell-core-web-cmdlets-in-depth.html#L13

Discussion