J'écris actuellement une cmdlet C# en utilisant le SDK PowerShell 5.0.Cmdlet verbose stream
J'essaie de diriger l'erreur StandardError d'un exécutable tiers vers la sortie cmdlet lorsqu'elle est exécutée à partir de powershell en "temps réel". J'utilise actuellement la bibliothèque MedallionShell pour gérer l'exécution du processus. J'ai essayé ceci avec un formulaire de gain C# normal et j'ai utilisé Command.StandardError.PipeToAsync (Console.OpenStandardOutput()) pour obtenir la sortie à imprimer car l'exécutable l'a généré sur la console en "temps réel".
J'ai essayé de créer mon propre objet Stream qui appelle WriteVerbose mais il n'a pas semblé imprimer quoi que ce soit à l'écran powershell (je passe -Verbose à cmdlet quand je l'exécute).
Mon flux actuel ressemble à ceci:
- Ouvert Powershell ISE
- Charger mon module (dll C#)
- Call my cmdlet avec des paramètres
- Command.Run
- Command.StandardError.PipeToAsync (???)
- Command.Wait (Au cours de cette étape, o l'entrée doit être transférée à la fenêtre powershell)
- Vérifiez Commande.Résult.Succès.
Quelqu'un peut-il me diriger dans la bonne direction à ce sujet?
Est-ce que votre propre 'Stream' appel de mise en œuvre' WriteVerbose' directement ou les maréchal à fil de pipeline? – PetSerAl
Mon implémentation du flux a pris la cmdlet et l'a utilisée pour appeler WriteVerbose. Les octets que j'ai reçus de l'appel Write, j'ai converti en une chaîne en utilisant le Encoding.UTF8.GetString (octets). –
Ce n'est pas ce que je demande. Vous ne pouvez pas simplement appeler 'WriteVerbose' sur un thread arbitraire. Alors, avez-vous convoqué les appels à 'WriteVerbose' vers le thread pipeline? – PetSerAl