2010-06-22 3 views
1

J'utilise PowerShell 2.0 pour écrire des données dans le flux de débogage de PowerShell via la fonction Write-Debug. Maintenant, je veux lire ce flux à partir du même script PowerShell. J'ai essayé de rediriger le flux de débogage avec "2> & 1", mais cela ne fonctionne que pour le flux d'erreurs.Comment lire le flux de débogage de PowerShell à partir de PowerShell?

Existe-t-il un moyen de lire le flux de débogage PowerShell à partir d'un script PowerShell?

Répondre

2

Vous pouvez également tester votre fonction qui sera appelée à la place de la cmdlet Write-Debug. Voici une implémentation très rapide:

$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

Merci! Cela fonctionne très bien pour mon problème. –

Questions connexes