scripts/Log-Output.ps1
function global:Log-Output { [CmdletBinding()] param ( [Parameter(Position = 0, Mandatory = $false, ValueFromPipeline = $true)] [object]$message, [Parameter(Position = 1, Mandatory = $true)] [hashtable]$config, [Parameter(Position = 2, Mandatory = $false)] [bool]$Rethrow = $false ) process { $tmstmp = Get-Date -format "[yyyy-MM-dd HH:mm:ss]" if ($message -is [System.Management.Automation.ErrorRecord]) { if ($Rethrow) { $additionalInfo = "$tmstmp ERROR: $message" + ` "`n$($message.InvocationInfo.PositionMessage)" + ` "`n`t+ CategoryInfo : $($message.CategoryInfo.Category): ($($message.CategoryInfo.TargetName):$($message.CategoryInfo.TargetType)) [], $($message.CategoryInfo.Reason)" + ` "`n`t+ FullyQualifiedErrorId : $($message.FullyQualifiedErrorId)" Add-Content -Path $config.attributes.pwshake_log_path -Value $additionalInfo -Encoding UTF8 throw $message } else { Add-Content -Path $config.attributes.pwshake_log_path -Value "$tmstmp $message" -Encoding UTF8 $Host.UI.WriteErrorLine("$message") } } else { Add-Content -Path $config.attributes.pwshake_log_path -Value "$tmstmp $message" -Encoding UTF8 Write-Host $message } } } |