Как прочитать поток отладки PowerShell из PowerShell? - PullRequest
1 голос
/ 22 июня 2010

Я использую PowerShell 2.0 для записи данных в поток отладки PowerShell с помощью функции Write-Debug . Теперь я хочу прочитать этот поток из того же скрипта PowerShell. Я попытался перенаправить поток отладки с помощью «2> & 1», но это работает только для потока ошибок.

Есть ли способ прочитать поток отладки PowerShell из сценария PowerShell?

Ответы [ 2 ]

2 голосов
/ 23 июня 2010

Вы также можете поэкспериментировать со своей функцией, которая будет вызываться вместо командлета 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")
2 голосов
/ 22 июня 2010

Это можно сделать, но это сложно.См. Статью Ойсина о ведении журнала сценариев .В общем, эта проблема возможности перенаправлять потоки, отличные от stdout и stderr, была зарегистрирована как предложение на сайте подключения .Вы можете проголосовать за это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...