Page 1 sur 1

Récupérez le retour d'une commande powershell

Posté : jeu. 17 juin 2021 10:35
par milouse95
Bonjour,

Je cherche à lancer une commande powershell et récupérer le résultat.
J'ai essayé pleins de méthodes run() ou shellexcute() mais sans succès.
Je veux pas qu'une fenêtre s'ouvre, je veux que la commande powershell soit transparent.
Pouvez-vous me donner la démarche à suivre.
Merci d'avance,

Damien

Re: Récupérez le retour d'une commande powershell

Posté : jeu. 17 juin 2021 12:42
par TommyDDR
Run fonctionne très bien chez moi :
#include <AutoItConstants.au3>
#include <WinAPIConv.au3>

Local $pid = Run("powershell.exe dir", @WorkingDir, @SW_HIDE, BitOR($STDIN_CHILD, $STDOUT_CHILD, $STDERR_CHILD))
Local $canRead = True

While($canRead)
   $canRead = ProcessExists($pid)
   ConsoleWrite(_WinAPI_OemToChar(StdoutRead($pid)))
   ConsoleWriteError(_WinAPI_OemToChar(StderrRead($pid)))
WEnd
StdioClose($pid)
Note, il est important de lire le flux (StdoutRead / StderrRead) une dernière fois quand le processus s'est arrêté pour être sur d'avoir tout lu.
En effet, si vous avez lu, qu'entre temps le processus a envoyé d'autres données, qu'il s'est arrêté et que vous vous basez sur l'existence ou non du processus, il vous manquera des données (c'est à ça que sert le $canRead).

Re: Récupérez le retour d'une commande powershell

Posté : jeu. 17 juin 2021 14:23
par milouse95
Merci de votre retour et vos explications.
Le problème, c'est même en exécutant votre code.
j'ai rien qui s'affiche la console du bas et j'ai une fenêtre blanc qui s'affiche.
Par contre si je remplace par Run(@ComSpec & " /c dir "& @ScriptFullPath, "", @SW_HIDE, $STDOUT_CHILD)
la j'ai bien les retours dans la console et pas de fenêtre.

Re: Récupérez le retour d'une commande powershell

Posté : jeu. 17 juin 2021 21:37
par keving
Est-ce qu'il serait possible de voir votre code (complet ou en partie) ?
C'est un petit peu difficile d'aider quelqu'un en ne sachant pas vraiment ce que l'on est censé faire...
Avec le peu d'informations à notre disposition, je ne peux que donner un lien vers la documentation officielle qui montre dans l'exemple comment cela fonctionne:
  • StdoutRead
  • StderrRead

Re: Récupérez le retour d'une commande powershell

Posté : mer. 07 juil. 2021 08:25
par milouse95
Désolé de répondre si tard mais merci pour vos commentaires.
J''ai galéré car autoit plantait quand je lançais un script powershell.
Je viens de m'y remettre avec un autre pc et ça fonctionne.
Je ne comprends pas pourquoi car avant cela fonctionnait.