Private/Invoke-WebRequestWithLogging.ps1
|
function Invoke-WebRequestWithLogging { [CmdletBinding()] param( [Parameter(Mandatory = $true)] [string]$Uri, [Parameter(Mandatory = $false)] [string]$Method = 'GET', [Parameter(Mandatory = $false)] [object]$Headers, [Parameter(Mandatory = $false)] [object]$Body, [Parameter(Mandatory = $false)] [string]$ContentType, [Parameter(Mandatory = $false)] [switch]$UseBasicParsing ) Write-CustomLog -Message "Executing web request to: $Uri (Method: $Method)" -Severity 'DEBUG' try { $params = @{ Uri = $Uri Method = $Method } if ($Headers) { $params.Add('Headers', $Headers) } if ($Body) { $params.Add('Body', $Body) } if ($ContentType) { $params.Add('ContentType', $ContentType) } if ($UseBasicParsing) { $params.Add('UseBasicParsing', $true) } $response = Invoke-WebRequest @params Write-CustomLog -Message "Successfully completed request to: $Uri (Status: $($response.StatusCode))" -Severity 'DEBUG' return $response } catch { $errorMessage = "Failed to execute web request to $Uri. Error: $($_.Exception.Message)" Write-CustomLog -Message $errorMessage -Severity 'ERROR' if ($_.Exception.Response) { $statusCode = $_.Exception.Response.StatusCode.value__ Write-CustomLog -Message "HTTP Status Code: $statusCode `n Response: $($_.ToString())" -Severity 'ERROR' } throw $errorMessage } } |