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
|
function Restore-NativeCommandStream
{ <#
.SYNOPSIS
This CmdLet gathers multiple ErrorRecord objects and reconstructs outputs
as a single line.
.DESCRIPTION
This CmdLet collects multiple ErrorRecord objects and emits one String
object per line.
.PARAMETER InputObject
A object stream is required as an input.
.PARAMETER Indent
Indentation string.
#>
[CmdletBinding()]
param(
[Parameter(ValueFromPipeline=$true)]
$InputObject
)
begin
{ $LineRemainer = "" }
process
{ if ($InputObject -is [System.Management.Automation.ErrorRecord])
{ if ($InputObject.FullyQualifiedErrorId -eq "NativeCommandError")
{ Write-Output $InputObject.ToString() }
elseif ($InputObject.FullyQualifiedErrorId -eq "NativeCommandErrorMessage")
{ $NewLine = $LineRemainer + $InputObject.ToString()
while (($NewLinePos = $NewLine.IndexOf("`n")) -ne -1)
{ Write-Output $NewLine.Substring(0, $NewLinePos)
$NewLine = $NewLine.Substring($NewLinePos + 1)
}
$LineRemainer = $NewLine
}
}
elseif ($InputObject -is [String])
{ Write-Output $InputObject }
else
{ Write-Host "Unsupported object in pipeline stream" }
}
end
{ if ($LineRemainer -ne "")
{ Write-Output $LineRemainer }
}
}
Export-ModuleMember -Function 'Restore-NativeCommandStream'
|