Выход из внешнего EXE и мои пользовательские объекты в PowerShell
-
03-10-2019 - |
Вопрос
(Извините за странный титул, не придумал ничего лучше ..)
Задний план
Я использую NUNIT-Console для проверки моих собраний. Это называется так (упрощенный):
function Test-ByNunit {
param($assembly, $tempFile = 'c:\temp\nunit.xml')
& <path-to-nunit-console> $assembly /nologo /xml:$tempFile @othparam
}
Test-ByNunit c:\temp\myAssembly.dll
У меня нет проблем с этим, это работает нормально.
Проблема
nunit-console
должен выводить свои сообщения как и до сих пор. Это означает - если не поймано, он должен отправить их на экран, в противном случае его можно сохранить в файле (Test-ByNunit $dll | set-content path
)
Я хотел бы получить как-то информацию о каждом тестовом случае, который был запущен (информация хранится в файле / XML) в виде массива PSObject
объекты.
Вопрос
У вас есть какой-нибудь совет, как вернуть информацию и по-прежнему оставить NUNIT выводить свои сообщения?
Если я просто напишу его на вывод, функция вернет массив строк (вывод из NUNIT-Console) и массив моих объектов. Затем перенаправление на выходной файл будет хранить мои объекты, но я хочу просто отображать их в консольном окне.
Единственная возможность, которая может работать, - это использовать [ref]
, Но я хотел бы избежать этого.
(Это не только о NUNIT-Console, но, конечно, это общий вопрос)
Решение
Если я получил задачу прямо тогда Out-Host
Должна помочь:
function Get-WithOutHost {
# external output is redirected to the host
cmd /c dir | Out-Host
# normal output to be reused later
Get-Process
}
# call
$result = Get-WithOutHost
# now $result holds the data to use, external output is on the screen
Редактировать: Конечно, этого недостаточно, если внешний выход должен быть повторно использован тоже, не только что показан