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

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
milouse95
Niveau 1
Niveau 1
Messages : 14
Enregistré le : mar. 12 juin 2012 16:26
Status : Hors ligne

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

#1

Message 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
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

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

#2

Message 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).
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
milouse95
Niveau 1
Niveau 1
Messages : 14
Enregistré le : mar. 12 juin 2012 16:26
Status : Hors ligne

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

#3

Message 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.
Avatar du membre
keving
Niveau 1
Niveau 1
Messages : 11
Enregistré le : mar. 01 juin 2021 16:00
Status : Hors ligne

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

#4

Message 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
milouse95
Niveau 1
Niveau 1
Messages : 14
Enregistré le : mar. 12 juin 2012 16:26
Status : Hors ligne

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

#5

Message 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.
Répondre