[..] Powershell dans Autoit

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Pwet
Niveau 1
Niveau 1
Messages : 8
Enregistré le : jeu. 22 sept. 2011 11:05
Status : Hors ligne

[..] Powershell dans Autoit

#1

Message par Pwet »

Bonjour,

J'ai un soucis de syntaxe dans auto-it. Je l'ai tourné dans tous les sens je ne trouve pas...
Voici la commande de base que je veux faire fonctionner via interface Auto-it:

get-wmiobject -class Win32_product -computername MONPC | Format-Wide -Column 1

Dans Autoit :

Code : Tout sélectionner

Run(@ComSpec & " /k powershell -command get-wmiobject -class win32_product -computername "&$rinput&" | format-wide -column 1")
C'est le | (pipe) qui pause problème dans la syntaxe. Si je m'arrête à -computername $mavarible celà fonctione...

Si quelqu'un à une solution je suis preneur.
Merci d'avance !!!
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Powershell dans Autoit

#2

Message par Tlem »

Pourquoi utiliser PowerShell puisque AutoIt gère parfaitement WMI.
Utilisez le moteur de recherche du forum pour avoir tous les éléments.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] Powershell dans Autoit

#3

Message par ani »

le pipe ne pause aucun problème
Sous dos pour que çà fonctionne faut ajouter ^ au pipe

Pour autoit, je verrais plutôt une récupération du texte de la console ms-dos.

Code : Tout sélectionner

#include <Constants.au3>
Dim $PC = "."
$PowerShell = Run("powershell.exe -command get-wmiobject -class win32_product -computername " & $PC & " | format-Wide -Column 1","","",$STDERR_CHILD + $STDOUT_CHILD)

Local $ligne_sortie,$ligne_erreur
While 1
    $ligne_sortie &= StdoutRead($PowerShell)
    If @error Then ExitLoop
Wend

while 1
    $ligne_erreur &= StderrRead($PowerShell)
    If @error Then ExitLoop
WEnd

ConsoleWrite("!Sortie console" & @CR & $ligne_sortie & @cr & "!Erreur:" & @CR & $ligne_erreur)
vérifie si le processus (powershell) est bien fermé ou non ;)

@Tlem powershell est dispo sous vista & seven me semble, ne pas l'utiliser serait un crime ;)

bonne continuation ;)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Powershell dans Autoit

#4

Message par Tlem »

ani a écrit :powershell est dispo sous vista & seven me semble, ne pas l'utiliser serait un crime ;)
Ouais, bof, cela rajoute la surcouche de la gestion du $STDERR_CHILD + $STDOUT_CHILD. C'est aussi dommage puisque AutoIt gère le WMI en natif. :D
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Pwet
Niveau 1
Niveau 1
Messages : 8
Enregistré le : jeu. 22 sept. 2011 11:05
Status : Hors ligne

Re: [..] Powershell dans Autoit

#5

Message par Pwet »

Bonjour,

Merci pour les réponses.
Le ^| fonctionne nickel. Même si il est vrai qu'il est plus "propre" d'utiliser le wmi directement dans auto-it.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Powershell dans Autoit

#6

Message par mikell »

Tlem a écrit :Ouais, bof
Bof +1 :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Powershell dans Autoit

#7

Message par matwachich »

mikell a écrit :
Tlem a écrit :Ouais, bof
Bof +1 :mrgreen:
+1 :roll: :shock:
Quelqu'un pourrait lui traduire son code en AutoIt, qu'il voit de ses propres yeux que c'est tellement plus simple...
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Powershell dans Autoit

#8

Message par mikell »

Avec plaisir, d'autant plus que (sorry ani) powershell n'est PAS sur XP :roll:
Un exemple rigolo, qui détecte les scripts autoit compilés :

Code : Tout sélectionner

$txt = ""
$WMIService = ObjGet("winmgmts:\\.\root\CIMV2")
$colItems = $WMIService.ExecQuery("SELECT * FROM Win32_Process")
   For $objItem In $colItems
If StringInStr(FileGetVersion ( $objItem.ExecutablePath, "CompiledScript"), "AutoIt") Then $txt &= $objItem.Caption & @crlf
   Next
msgbox(0, "", $txt)
Sinon, plus basique

Code : Tout sélectionner

$txt = ""
$WMIService = ObjGet("winmgmts:\\.\root\CIMV2")
$colItems = $WMIService.ExecQuery("SELECT * FROM Win32_Product")
For $objItem In $colItems
    $txt &= $objItem.Name & @crlf
Next
msgbox(0, "", $txt)

Et pour quelque chose de plus sérieux, ça : http://www.autoitscript.fr/forum/viewto ... f=6&t=9006
:wink:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre