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