Вывод из внешнего exe и моих пользовательских объектов в powershell - PullRequest
2 голосов
/ 06 мая 2010

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

Фон

Я использую 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, но, конечно, это общий вопрос)

1 Ответ

2 голосов
/ 06 мая 2010

Если я правильно выполнил задание, 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

РЕДАКТИРОВАТЬ: конечно, этого недостаточно, если внешний выход следует использовать повторно, а не просто показывать

...