Выход из внешнего EXE и мои пользовательские объекты в PowerShell

StackOverflow https://stackoverflow.com/questions/2780214

Вопрос

(Извините за странный титул, не придумал ничего лучше ..)

Задний план

Я использую 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

Редактировать: Конечно, этого недостаточно, если внешний выход должен быть повторно использован тоже, не только что показан

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top