Private/Resolve-ConfluenceApiError.ps1
|
function Resolve-ConfluenceApiError { <# .SYNOPSIS Liest Statuscode und Fehlertext aus einem fehlgeschlagenen Invoke-RestMethod/Invoke-WebRequest-Aufruf, kompatibel mit Windows PowerShell 5.1 (HttpWebResponse) und PowerShell 7+ (HttpResponseMessage). #> [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [System.Management.Automation.ErrorRecord] $ErrorRecord ) process { $StatusCode = $ErrorRecord.Exception.Response.StatusCode $ErrorBody = $ErrorRecord.ErrorDetails.Message if (-not $ErrorBody) { $Resp = $ErrorRecord.Exception.Response if ($Resp) { if ($Resp.PSObject.Methods.Name -contains "GetResponseStream") { # Windows PowerShell 5.1 (HttpWebResponse) $Reader = New-Object System.IO.StreamReader($Resp.GetResponseStream()) $ErrorBody = $Reader.ReadToEnd() } elseif ($Resp.PSObject.Properties.Name -contains "Content") { # PowerShell 7+ (HttpResponseMessage) $ErrorBody = $Resp.Content.ReadAsStringAsync().GetAwaiter().GetResult() } } } if (-not $ErrorBody) { $ErrorBody = $ErrorRecord.Exception.Message } } end { return [pscustomobject]@{ StatusCode = $StatusCode Message = $ErrorBody } } } |