Question Rediriger la sortie d'un exécutable

Plus d'informations
il y a 16 ans 11 mois #291 par Kévin
Salut,

je débute avec PowerShell, et je bloque depuis quelques jours :

j'ai trouvé un certain nombre de manières pour rediriger le flux de sortie d'une commande, afin d'effectuer un traitement avant d'afficher. Par exemple :

Get-Process | Out-String -stream | Select-String \"WINWORD\"

Mon problème, c'est que quand je remplace la commande (ici get-process) par un exécutable, tout s'affiche dans la console et je ne récupère aucune donnée. Par exemple :

cvs.exe | Out-String -stream | Select-String \"WINWORD\"
va afficher toutes les lignes sans tenir compte de mon filtre.

J'aimerais donc savoir comment rediriger le flux de sortie d'un exécutable afin d'effectuer un traitement similaire.

Merci d'avance :)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 11 mois #297 par Arnaud Petitjean
Bonjour KooKiz et bienvenue sur le forum ! ;)

Les \"command-lètes\" powershell sont prévues dès la conception à fonctionner avec le pipe, c'est donc normal que get-process fonctionne parfaitement bien.

Par contre ce n'est pas le cas des programmes externes qui peuvent produire des effets aléatoires avec le pipe. Je te recommanderais plutôt de rediriger la sortie de \"cvs.exe\" (pour reprendre ton exemple) dans un fichier.

[code:1]cvs.exe > cvs.txt[/code:1]

Puis de faire un get-content de ton fichier :

[code:1]get-content cvs.txt | Out-String -stream | Select-String \"WINWORD\"[/code:1]

Je ne garantis pas que ça marche car je n'ai pas pu tester mais je pense que c'est une meilleure direction pour arriver à tes fins.

Tiens nous au courant de la suite...

@++:)

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 11 mois #306 par Kévin
Ca serait quand même dommage qu'on soit obligé de passer par un fichier pour faire ce genre de choses :/

Je vais chercher encore avant de me rabattre sur cette solution. Je posterai ici si je trouve quelque chose :p


Edit : cvs.exe > temp.txt
Le fichier temp.txt est vide et les message s'affichent normalement, y comprit dans la console classique (cmd). Donc il semblerait que ce soit un problème propre à l'exécutable :s

Edit2 : cvs.exe 2&gt; temp.txt permet de retourner le contenu dans le fichier. Je vais essayer de trouver un équivalent avec |, mais vu que je ne sais pas à quoi correspond exactement le 2&gt; ça ne va pas être facile :)<br><br>Message édité par: KooKiz, à: 4/05/07 15:08

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 11 mois #311 par Arnaud Petitjean
Salut Kookiz,

De mémoire il me semble que 2&gt;toto.txt redirige les erreurs.

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.065 secondes
Propulsé par Kunena