Перенаправить операторы Write-Host в файл - PullRequest
16 голосов
/ 08 апреля 2011

У меня есть сценарий powershell, который я отлаживаю и хочу перенаправить все операторы write-host в файл.Есть ли простой способ сделать это?

Ответы [ 12 ]

0 голосов
/ 15 мая 2013

Я обнаружил, что лучший способ справиться с этим - это иметь функцию ведения журнала, которая будет определять наличие пользовательского интерфейса хоста и действовать соответствующим образом. Когда скрипт выполняется в интерактивном режиме, он отображает детали в пользовательском интерфейсе хоста, но когда он запускается через WinRM или в неинтерактивном режиме, он возвращается к выводу записи, так что вы можете захватить его, используя > или *> операторы перенаправления

function Log-Info ($msg, $color = "Blue") { 
    if($host.UI.RawUI.ForegroundColor -ne $null) {
        Write-Host "`n[$([datetime]::Now.ToLongTimeString())] $msg" -ForegroundColor $color -BackgroundColor "Gray"
    } else {
        Write-Output "`r`n[$([datetime]::Now.ToLongTimeString())] $msg" 
    }
}

В тех случаях, когда вы хотите получить полный вывод с окраской записи хоста, вы можете использовать сценарий Get-ConsoleAsHtml.ps1 , чтобы экспортировать буфер прокрутки хоста в файл html или RTF.

0 голосов
/ 22 апреля 2011

Вы не должны использовать Write-Host, если вы хотите, чтобы сообщения были в файле.Он предназначен только для записи на хост.

Вместо этого следует использовать модуль ведения журнала или Set / Add-Content.

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