2 votes

Comment lire le flux de débogage de PowerShell depuis PowerShell ?

J'utilise PowerShell 2.0 pour écrire des données dans le flux de débogage de PowerShell par le biais de la commande Write-Debug fonction. 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'erreur.

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

3voto

stej Points 14257

Vous pouvez également expérimenter avec votre fonction qui sera appelée à la place du cmdlet Write-Debug . Voici une mise en œuvre 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")

2voto

Keith Hill Points 73162

C'est possible, mais c'est complexe. Voir l'article d'Oisin sur script de journalisation . En général, cette question de la possibilité de rediriger des flux autres que stdout et stderr a été enregistré comme une suggestion sur le site connect . Vous pourriez vouloir voter sur ce sujet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X