La capture de Powershell sortie en C# après Pipeline.Invoquer jette
Je suis à court d'un Powershell script de test à partir d'une application en C#. Le script peut échouer en raison d'une mauvaise applet de commande qui provoque la pipe.Invoke() lève une exception.
Je suis capable de capturer toutes les informations dont j'ai besoin à propos de l'exception, mais je voudrais être en mesure d'afficher le script de sortie jusqu'à ce point. Je n'ai pas eu de chance, car les résultats semble être null lorsqu'une exception est levée.
Est-il quelque chose que je suis absent? Merci!
m_Runspace = RunspaceFactory.CreateRunspace();
m_Runspace.Open();
Pipeline pipe = m_Runspace.CreatePipeline();
pipe.Commands.AddScript(File.ReadAllText(ScriptFile));
pipe.Commands.Add("Out-String");
try {
results = pipe.Invoke();
}
catch (System.Exception)
{
m_Runspace.Close();
//How can I get to the Powershell output that comes before the exception?
}
OriginalL'auteur Nick A | 2009-08-05
Vous devez vous connecter pour publier un commentaire.
Ne sais pas si c'est utile. Je devine que vous êtes l'exécution de V1. Cette V2 approche ne jette pas et imprime le résultat:
OriginalL'auteur Doug Finke
La solution que j'ai fini par utiliser, de mettre en œuvre notre propre PSHost PowerShell pour gérer la sortie. L'information initiale pour cela venait de la http://community.bartdesmet.net/blogs/bart/archive/2008/07/06/windows-powershell-through-ironruby-writing-a-custom-pshost.aspx à la "Construction d'une coutume PS hôte".
Dans mon cas, il n'a besoin de l'aide personnalisée PSHostRawUserInterface.
Voici un aperçu rapide de ce qui a été fait. J'ai seulement une liste la fonction que j'ai fait implimented, mais il y a beaucoup d'autres qui sont juste à contenir throw new NotImplementedException();
OriginalL'auteur Nick A
J'ai le même problème. La meilleure façon d'obtenir de sortie lors de la conduite.Invoke() lève une exception est l'utilisation de Invoke(IEnumerable entrée, IList de sortie)
Exemple montre comment obtenir toutes les sorties, l'erreur, l'affaiblissement de etc. dans l'ordre correct
Script PowerShell
C#
OriginalL'auteur Jan Smuda