Private/New-StmError.ps1
function New-StmError { [CmdletBinding(SupportsShouldProcess = $true)] param ( [Parameter(Mandatory = $true)] [System.Exception] $Exception, [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string] $ErrorId, [Parameter(Mandatory = $true)] [System.Management.Automation.ErrorCategory] $ErrorCategory, [Parameter(Mandatory = $false)] [object] $TargetObject, [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string] $Message, [Parameter(Mandatory = $false)] [string] $RecommendedAction ) begin { Write-Verbose "Creating error record with ID '$ErrorId'" } process { if ($PSCmdlet.ShouldProcess($ErrorId, 'Create error record')) { $errorDetails = New-Object -TypeName 'System.Management.Automation.ErrorDetails' -ArgumentList $Message $errorRecord = New-Object -TypeName 'System.Management.Automation.ErrorRecord' -ArgumentList @( $Exception, # The original exception $ErrorId, # The error ID $ErrorCategory, # The error category $TargetObject # The target object ) $errorRecord.ErrorDetails = $errorDetails if ($PSBoundParameters.ContainsKey('RecommendedAction')) { $errorRecord.ErrorDetails.RecommendedAction = $RecommendedAction } $errorRecord } } end { Write-Verbose 'Error record created successfully' } } |