-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathOutFunctions.ps1
More file actions
79 lines (71 loc) · 3.23 KB
/
OutFunctions.ps1
File metadata and controls
79 lines (71 loc) · 3.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# TODO: It would be better if the Out-Default function resolved the underlying Out-Default
# command in the begin block. This would allow for supporting other modules that override
# Out-Default.
$script:outDefaultCmdlet = $ExecutionContext.InvokeCommand.GetCmdlet("Microsoft.PowerShell.Core\Out-Default")
########################################
# Public functions.
########################################
function Out-Default {
[CmdletBinding(ConfirmImpact = "Medium")]
param(
[Parameter(ValueFromPipeline = $true)]
[System.Management.Automation.PSObject]$InputObject)
begin {
#Write-Host '[Entering Begin Out-Default]'
$__sp = { & $script:outDefaultCmdlet @PSBoundParameters }.GetSteppablePipeline()
$__sp.Begin($pscmdlet)
#Write-Host '[Leaving Begin Out-Default]'
}
process {
#Write-Host '[Entering Process Out-Default]'
if ($_ -is [System.Management.Automation.ErrorRecord]) {
Write-Verbose -Message 'Error record:' 4>&1 | Out-Default
Write-Verbose -Message (Remove-TrailingNewLine (Out-String -InputObject $_ -Width 2147483647)) 4>&1 | Out-Default
Write-Verbose -Message 'Script stack trace:' 4>&1 | Out-Default
Write-Verbose -Message "$($_.ScriptStackTrace)" 4>&1 | Out-Default
Write-Verbose -Message 'Exception:' 4>&1 | Out-Default
Write-Verbose -Message $_.Exception.ToString() 4>&1 | Out-Default
Write-TaskError -Message $_.Exception.Message
} elseif ($_ -is [System.Management.Automation.WarningRecord]) {
Write-TaskWarning -Message (Remove-TrailingNewLine (Out-String -InputObject $_ -Width 2147483647))
} elseif ($_ -is [System.Management.Automation.VerboseRecord] -and !$global:__vstsNoOverrideVerbose) {
foreach ($private:str in (Format-DebugMessage -Object $_)) {
Write-TaskVerbose -Message $private:str
}
} elseif ($_ -is [System.Management.Automation.DebugRecord] -and !$global:__vstsNoOverrideVerbose) {
foreach ($private:str in (Format-DebugMessage -Object $_)) {
Write-TaskDebug -Message $private:str
}
} else {
# TODO: Consider using out-string here to control the width. As a security precaution it would actually be best to set it to max so wrapping doesn't interfere with secret masking.
$__sp.Process($_)
}
#Write-Host '[Leaving Process Out-Default]'
}
end {
#Write-Host '[Entering End Out-Default]'
$__sp.End()
#Write-Host '[Leaving End Out-Default]'
}
}
########################################
# Private functions.
########################################
function Format-DebugMessage {
[CmdletBinding()]
param([psobject]$Object)
$private:str = Out-String -InputObject $Object -Width 2147483647
$private:str = Remove-TrailingNewLine $private:str
"$private:str".Replace("`r`n", "`n").Replace("`r", "`n").Split("`n"[0])
}
function Remove-TrailingNewLine {
[CmdletBinding()]
param($Str)
if ([object]::ReferenceEquals($Str, $null)) {
return $Str
} elseif ($Str.EndsWith("`r`n")) {
return $Str.Substring(0, $Str.Length - 2)
} else {
return $Str
}
}