La sortie de exe externe et mes objets personnalisés dans powershell
-
03-10-2019 - |
Question
(Désolé pour le titre étrange, ne suis pas venu avec rien de mieux ..)
Historique
J'utilise nunit-console pour tester mes ensembles. Il est appelé comme celui-ci (simplifié):
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
Je n'ai aucun problème avec cela, il fonctionne très bien.
Problème
nunit-console
devrait afficher ses messages comme jusqu'à présent. Cela signifie - sinon capturé, il doit les envoyer à l'écran, sinon il pourrait être stocké dans le fichier (Test-ByNunit $dll | set-content path
)
Je voudrais revenir en quelque sorte des informations sur chaque cas de test qui a été exécuté (l'information est stockée dans le fichier / xml) sous forme de tableau d'objets PSObject
.
Question
Avez-vous une astuce comment retourner l'info et laisser encore sortie nunit ses messages?
Si je vous écris simplement à la sortie, la fonction retourne tableau de chaînes (sortie nunit-console) et un ensemble de mes objets. Ensuite, la redirection vers un fichier de sortie stocke mes objets aussi bien, mais je voudrais juste les afficher dans la fenêtre de la console.
La seule possibilité qui pourrait fonctionner est d'utiliser [ref]
, mais je voudrais éviter.
(ce qui est non seulement nunit-console, mais bien sûr, il est question d'ordre général)
La solution
Si je suis la bonne tâche alors Out-Host
devrait aider:
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: Bien sûr, cela ne suffit pas si la sortie externe doit être réutilisée, aussi, non seulement montré