Написание командлета C # PowerShell - как вывести журнал отладки для вызывающей стороны TeamCity - PullRequest
0 голосов
/ 03 июля 2018

Я пишу командлет PowerShell в C #, и мне нужно добавить некоторые диагностические журналы в сценарий, чтобы я мог оценить поведение через TeamCity. Поэкспериментировав с WriteVerbose с включенным для функции флагом -Verbose, в TeamCity ничего не было зарегистрировано.

Что эквивалентно Write-Host для командлета?

В чем разница между следующими командлетами:

  • WriteCommandDetail
  • WriteProgress
  • WriteVerbose
  • WriteDebug
  • WriteWarning
  • WriteError
  • WriteObject

1 Ответ

0 голосов
/ 10 июля 2018

В случае, если кто-то еще столкнется с этой проблемой, я узнал об этом: PowerShell поддерживает множество различных потоков вывода.

Однако, за которым стоит TeamCity, ничего из вышеперечисленного нет, [C #] Console.WriteLine достаточно для регистрации в журнале трассировки TeamCity.

Чтобы ответить на мой предыдущий вопрос:

WriteError используется для правильного возврата исключений (это работает хорошо, хотя и немного запутанно, просто использование C # throw приведет к аварийному завершению PowerShell при отладке командлета).

WriteObject используется для возврата пользовательских или существующих объектов C # из командлета в назначение переменной (например, [PowerShell] $ x = Do-Something, где [C #] WriteObject (Output) будет возвращено в [PowerShell] $ x) .

WriteInformation (впервые в PowerShell 5) - это новый способ записи в выходной поток, теперь Write-Output перенаправляет в информационный поток.

...