2010-06-22 36 views

回答

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") 
+0

謝謝!它對我的問題很好。 – 2010-06-23 13:37:00