Как сделать write-host узнаваемым на TFS? - PullRequest
0 голосов
/ 23 мая 2019

write-verbose выводит любой вывод PowerShell на экран ведения журнала TFS, но write-host - нет.

Что мне нравится в write-host, так это опция -foreground color, которая у него есть.

поэтому я хотел бы сохранить цвета, и поэтому я спрашиваю:

Я пытался write-host, но ничего не выводится в журнале TFS

как я могу настроить TFSрегистрация, чтобы принять / распознать write-host так же, как он распознает write-verbose?

1 Ответ

1 голос
/ 25 мая 2019

В комментариях есть решение для более узких требований: сделать так, чтобы TFS показывал Write-Host вывод без цветов, продолжал иметь цвета на локальном и не заменял все вызовы Write-Host в коде на что-то другое.

Решение состоит в том, чтобы переопределить Write-Host только для среды TFS, так что вызовы Write-Host заканчиваются использованием некоторой поддерживаемой команды Write- (например, Write-Verbose или Write-Output).

Таким образом, вы можете добавить это в начало вашего сценария powershell:

if($Env:BUILD_BUILDNUMBER) {
    function Write-Host($object) {
        Write-Output $object
    }
}

Обратите внимание, что в этом подходе есть важное ограничение: если какая-либо функция использует Write-Host и затем возвращает какое-либо значение, возвращаемое значение будет включать в себя все, что было отправлено на Write-Host. Например, сравните значение $x до переопределения Write-Host и после:

function test() {
    Write-Host "hi"
    return "bye"
}
$x = test

Чтобы избежать этого, вы также можете использовать Write-Verbose или любой другой Write- вместо Write-Output, но они не работают хорошо для не примитивных типов. Они либо выдают ошибку, либо просто показывают имя типа. Вы можете сделать $object.ToString() внутри переопределения Write-Host, чтобы предотвратить ошибки, но часто это может просто показать имя типа объекта.

Дополнительная информация о переменных env TFS: https://docs.microsoft.com/en-us/azure/devops/pipelines/scripts/powershell?view=azure-devops

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