La salida del exe externa y mi costumbre objetos en PowerShell
-
03-10-2019 - |
Pregunta
(Lo siento por título extraño, no han ocurrido nada mejor ..)
Fondo
Yo uso nunit-consola para probar mis montajes. Se llama así (simplificado):
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
No tengo ningún problema con esto, trabaja muy bien.
Problema:
nunit-console
debe hacer salir sus mensajes como hasta ahora. Eso significa que - si no es capturado, debe enviarlos a la pantalla, de lo contrario podría ser almacenada en el archivo (Test-ByNunit $dll | set-content path
)
Me gustaría volver alguna información sobre cada caso de prueba que se ejecutó (la información se almacena en el archivo / xml) en forma de matriz de objetos PSObject
.
Pregunta ??strong>
¿Tiene usted algún consejo de cómo devolver la información y todavía dejar sus mensajes de salida nunit?
Si yo simplemente escribo en la salida, la función devolverá matriz de cadenas (salida de nunit-consola) y la matriz de mis objetos. A continuación, la redirección de archivo de salida almacenará mis objetos así, pero me gustaría simplemente mostrarlos en la ventana de la consola.
La única posibilidad que podría funcionar es usar [ref]
, pero me gustaría evitarlo.
(esto no es sólo acerca nunit-consola, pero por supuesto que es cuestión general)
Solución
Si tengo la tarea en ese momento Out-Host
debería ayudar:
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: por supuesto esto no es suficiente si la salida exterior debe ser reutilizado, también, no sólo se muestra