Uscita da exe esterno e mia abitudine oggetti in PowerShell
-
03-10-2019 - |
Domanda
(Ci scusiamo per strano titolo, non hanno venire con qualcosa di meglio ..)
Sfondo
Io uso NUnit-console per testare le mie assemblee. Si chiama come questo (semplificato):
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
Non ho alcun problema con questo, funziona benissimo.
problema
nunit-console
dovrebbe produrre i suoi messaggi come finora. Ciò significa che - se non catturato, dovrebbe inviarli a schermo, altrimenti potrebbe essere memorizzata nel file (Test-ByNunit $dll | set-content path
)
Mi piacerebbe tornare in qualche modo informazioni su ogni test-case che è stato eseguito (le informazioni sono memorizzate nel file / xml) in forma di array di oggetti PSObject
.
Domanda
Avete qualche suggerimento come restituire informazioni e ancora lascia uscita NUnit i suoi messaggi?
Se ho semplicemente scrivo uscita, la funzione restituirà array di stringhe (uscita da NUnit-console) e la matrice dei miei oggetti. Poi reindirizzamento a file di output memorizzerà miei oggetti pure, ma mi piacerebbe solo visualizzarli nella finestra della console.
L'unica possibilità che potrebbe funzionare è quello di utilizzare [ref]
, ma vorrei evitarlo.
(questo non è solo di NUnit-console, ma ovviamente è questione generale)
Soluzione
Se ho avuto il compito giusto allora Out-Host
dovrebbe aiutare:
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: ovviamente questo non è sufficiente se l'output esterno deve essere riutilizzato, anche, non solo mostrato