Write-Footer.ps1
|
Function Write-Footer { [CmdletBinding()] Param ( $ParentErrors, $IgonreErrors, [Switch]$Detailed, [ValidateSet("Stop","Continue")] [String]$ErrorFooterAction ) #Build footer "###########################################################" "# StopDateTime: $(Get-Date)" #Filter Errors if($null -ne $IgonreErrors) { "# Ignore Errors: $($IgonreErrors | ConvertTo-Json -Compress)" "# Total Errors: $($ParentErrors.Count)" $TempErrors = $ParentErrors if($IgonreErrors -is [String]) { #Basic filter $TempErrors = $TempErrors | Where-Object ScriptStackTrace -NotMatch $IgonreErrors } else { #Advanced filters if($IgonreErrors['ScriptStackTrace']) { $TempErrors = $TempErrors | Where-Object ScriptStackTrace -NotMatch $IgonreErrors['ScriptStackTrace'] } if($IgonreErrors['ErrorDetails']) { $TempErrors = $TempErrors | Where-Object ErrorDetails -NotMatch $IgonreErrors['ErrorDetails'] } if($IgonreErrors['Exception']) { $TempErrors = $TempErrors | Where-Object Exception -NotMatch $IgonreErrors['Exception'] } } $Errors = $TempErrors } else { $Errors = $ParentErrors } "# Errors: $($Errors.Count)" if($Errors.Count) { if($Detailed) { $Errors | Select-Object * } Write-Error "$($Errors.Count) errors detected in the script" -ErrorAction $ErrorFooterAction } "###########################################################" } #Write-Footer -ParentErrors $Error -IgonreErrors @{ScriptStackTrace="AzTable|PowerShellGet";ErrorDetails="ConversationBlockedByUser"} -ErrorFooterAction Continue -Detailed #Write-Footer -ParentErrors $Error -IgonreErrors "AzTable|PowerShellGet" -ErrorFooterAction Stop -Detailed |