我使用PowerShell 2.0通过Write-Debug函数将数据写入PowerShell的调试流。现在我想从同一个PowerShell脚本中读取该流。我尝试使用“2>& 1”重定向调试流,但这仅适用于错误流。
有没有办法从PowerShell脚本中读取PowerShell调试流?
答案 0 :(得分:2)
可以做但但很复杂。请参阅Oisin在script logging上的文章。一般来说,能够重定向除stdout和stderr之外的流的问题是logged as a suggestion on the connect site。你可能想投票。
答案 1 :(得分:2)
您还可以尝试使用将被调用的函数而不是cmdlet Write-Debug
。这是一个非常快速的实现:
$global:__DebugInfo = new-object PSObject -prop @{
Enabled=$false
Messages=new-object System.Collections.ArrayList
}
function Write-Debug {
param([Parameter(Mandatory=$true)][string]$Message)
$d = Get-Command Write-Debug -CommandType cmdlet; & $d $Message;
if ($global:__DebugInfo.Enabled) {
$global:__DebugInfo.Messages.Add($Message) > $null
}
}
function Enable-Debug {
$global:DebugPreference = 'continue'
$global:__DebugInfo.Enabled = $true
}
function Disable-Debug {
$global:DebugPreference = 'silentlycontinue'
$global:__DebugInfo.Enabled = $false
}
# Test
Enable-Debug
Write-Debug 'this is test debug message'
Write-Debug 'switch off'
Disable-Debug
Write-Debug 'this message should not be included'
Write-Host "Debug messages:"
Write-Host ($__DebugInfo.Messages -join "`n")