我正在使用PowerShell 2.0通過Write-Debug函數將數據寫入PowerShell的調試流。現在我想從同一個PowerShell腳本讀取該流。我試圖用「2> & 1」重定向調試流,但這隻適用於錯誤流。如何從PowerShell中讀取PowerShell的調試流?
有沒有辦法從PowerShell腳本中讀取PowerShell調試流?
我正在使用PowerShell 2.0通過Write-Debug函數將數據寫入PowerShell的調試流。現在我想從同一個PowerShell腳本讀取該流。我試圖用「2> & 1」重定向調試流,但這隻適用於錯誤流。如何從PowerShell中讀取PowerShell的調試流?
有沒有辦法從PowerShell腳本中讀取PowerShell調試流?
您也可以嘗試使用將被調用的函數,而不是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")
它可以完成,但它很複雜。請參閱script logging上Oisin的書面文字。一般來說,能夠重定向stdout和stderr以外的流的問題已經在logged as a suggestion on the connect site。你可能想對它投票。
謝謝!它對我的問題很好。 – 2010-06-23 13:37:00