Die Ausgabe von externen exe und meine benutzerdefinierten Objekte in Powershell
-
03-10-2019 - |
Frage
(Sorry für seltsame Titel, nicht kommen mit etwas besser ..)
Hintergrund
Ich benutze nunit-Konsole meine Baugruppen zu testen. Es wird wie folgt aufgerufen (vereinfacht):
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
Ich habe kein Problem damit, es funktioniert gut.
Problem
nunit-console
ausgeben sollte seine Nachrichten als bisher. Das bedeutet - wenn nicht erfasst, sollte es ihnen Bildschirm senden, sonst könnte es in der Datei gespeichert werden (Test-ByNunit $dll | set-content path
)
Ich mag irgendwie Informationen zu jedem Testfall zurückzugeben, die ausgeführt wurde (die Informationen in der / xml-Datei gespeichert sind) in Form von Array von PSObject
Objekten.
Frage
Haben Sie eine Spitze, wie die Informationen zurück und lassen noch nunit Ausgabe seine Nachrichten?
Wenn ich einfach die Ausgabe schreibt, wird die Funktion zurückgeben Array von Strings (Ausgabe von nunit-Konsole) und Array meiner Objekte. Dann Umleitung auf Ausgabedatei wird auch meine Objekte speichern, aber ich würde sie nur in Konsolenfenster wie angezeigt werden soll.
Die einzige Möglichkeit, das könnte Arbeit Gebrauch [ref]
ist, aber ich mag es vermeiden.
(dies ist nicht nur über nunit-Konsole, aber natürlich ist es allgemeine Frage)
Lösung
Wenn ich die Aufgabe bekam Recht dann sollte Out-Host
helfen:
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
EDIT: Natürlich ist dies nicht genug, wenn externe Ausgabe wiederverwendet werden sollte auch nicht nur gezeigt