2010-08-05 4 views
1

J'ai écrit un hôte PowerShell personnalisé qui fournit un shell interactif WinForms. Les exemples MSDN étaient excellents et j'ai réussi à faire fonctionner quelque chose en quelques heures.Hôte Powershell C#, capture de la sortie des applications de console lancées

Toutes les commandes intégrées standard comme dir, etc fonctionnent comme prévu. Toutefois, lorsque j'essaie de lancer une autre application de console, comme le client FTP, cette application commence à envoyer la sortie vers stdout. Je peux voir cela en changeant le type d'application dans VS de Windows à la console. Dès que je lance FTP à partir de mon shell interactif, FTP commence à parler à la fenêtre de la console.

Quelqu'un s'est-il attaqué à cela avant? En C++ je pourrais simplement rediriger stdin et stdout et en finir avec, mais je ne vois pas comment faire ça en C#. Aidez-moi!

mise à jour

Ok, tout ce que je lance ce n'est pas une commande intégrée commence immédiatement Interagir avec la fenêtre de la console.

Répondre

1

Check this out, peut-être il peut aider

Process p = new Process(); 
    p.StartInfo.FileName = "netstat"; 
    p.StartInfo.Arguments = "-a"; 
    p.StartInfo.RedirectStandardOutput = true; 
    p.StartInfo.UseShellExecute = false; 
    p.Start(); 
    System.Diagnostics.Debug.WriteLine(p.StandardOutput.ReadToEnd()); 
+1

Merci. Cela fonctionne bien pour cmd.exe et d'autres exécutables, mais pas pour PowerShell. –

+0

Désolé, j'ai complètement raté la partie Powershell –

1

J'ai enfin trouvé un exemple de travail here! Bien qu'il n'utilise pas les classes Powershell dans le framework .NET, il fait exactement ce dont j'ai besoin, y compris la capture réussie de io à partir d'applications de console lancées.

Questions connexes