Page 1 sur 1

AUTOIT et LocalGPo

Posté : lun. 25 juin 2018 22:20
par cheap66
Bonsoir,

Je cherche à restaurer des GPO avec AUTOIT.

Les commandes fonctionnent en shell classique

Voici le détail de ma fonction:

Func localGPOrestore()
; ShellExecuteWait (@ScriptDir&"\livraison NCIA\GPO\LocalGPO.msi", '"/quiet /passive"')
$CMD = '"C:\Windows\system32\cmd.exe /t:17 /E:ON /F:ON /K prompt [COS CONSOLE] $P$G$"'
Run(@ComSpec & " /c " & $CMD)
Sleep(2000)
send ("C:")
Sleep(500)
send ("{ENTER}")
Sleep(500)
send ("cd C:\Users\csi\Desktop\autoitest\install 18.3\livraison NCIA\GPO")
Sleep(500)
send ("{ENTER}")
Sleep(500)
send ("LGPO.exe /g C:\Users\Public\Documents\{64DBA341-FCBC-4430-9D57-D2D513A1EA9F}")
send ("{ENTER}")
Sleep(50000)
send ("exit")
Sleep(500)
send ("{ENTER}")
EndFunc

J'ai un message d'erreur me disant que C:\Users\Public\Documents\6 n'existe pas
Quelle ponctuation dois-je utiliser?

Re: AUTOIT et LocalGPo

Posté : lun. 02 juil. 2018 14:06
par jpascal
La commande Send essaie d'insérer la touche {64DBA341-FCBC-4430-9D57-D2D513A1EA9F}

Essaie la commande :
send ("LGPO.exe /g C:\Users\Public\Documents\\{64DBA341-FCBC-4430-9D57-D2D513A1EA9F\}")

Et pour écrire dans la fenêtre, le mieux est d'utiliser StdinWrite() en ayant au préalable utilisé :
Run($cmd, @ScriptDir, @SW_HIDE, $STDIN_CHILD + $STDERR_CHILD + $STDOUT_CHILD)

Je ne rentre pas dans les détails et te laisse consulter l'aide si tu es intéressé.

Re: AUTOIT et LocalGPo

Posté : lun. 02 juil. 2018 14:33
par cheap66
merci jpascal,
je viens de tester et ça fonctionne en mettant le premier \ après { au lieu de le mettre avant.

Encore une fois, merci pour ton aide.

Re: AUTOIT et LocalGPo

Posté : ven. 24 août 2018 16:19
par cheap66
Bonjour jpascal. Comme tu me l’as demandé en MP, je te repose ma question directement sur le forum.



cheap66 a écrit :ven. 24 août 2018 09:33 Bonjour jpascal,

Sais-tu comment je pourrais faire pour pouvoir sélectionner le répertoire en question (par exemple avec FileSelectFolder) puis utiliser la valeur en question pour recréer la commande à envoyer après mon LGPO.exe?

exemple fileselectfolder me ressort C:\répertoire\{2156453353531544561586}
et je voudrais pouvoir lancer la commande
send ("LGPO.exe /g C:\répertoire\{\2156453353531544561586\}")

Merci d'avance pour tes propositions.

Cheap

Sujet : AUTOIT et LocalGPo
jpascal a écrit : lun. 02 juil. 2018 14:06 La commande Send essaie d'insérer la touche {64DBA341-FCBC-4430-9D57-D2D513A1EA9F}

Essaie la commande :
send ("LGPO.exe /g C:\Users\Public\Documents\\{64DBA341-FCBC-4430-9D57-D2D513A1EA9F\}")

Et pour écrire dans la fenêtre, le mieux est d'utiliser StdinWrite() en ayant au préalable utilisé :
Run($cmd, @ScriptDir, @SW_HIDE, $STDIN_CHILD + $STDERR_CHILD + $STDOUT_CHILD)

Je ne rentre pas dans les détails et te laisse consulter l'aide si tu es intéressé.

Re: AUTOIT et LocalGPo

Posté : sam. 25 août 2018 16:46
par mikell
Faut penser au paramètre "raw" de Send() :wink:

$folder = "C:\répertoire\{2156453353531544561586}"  ; retour de FileSelectFolder
send ("LGPO.exe /g " & $folder, 1)

Re: AUTOIT et LocalGPo

Posté : sam. 25 août 2018 22:11
par cheap66
Bonsoir mikell, merci pour ta réponse.
Le souci que j'ai est que les {} ne sont pas comprises, il faut rajouter un \ après le { et un \ avant le \ et c'est cela que je ne sais pas faire.

Re: AUTOIT et LocalGPo

Posté : dim. 26 août 2018 10:29
par mikell
Ah ? chez moi ça marche... mais si c'est indispensable tu peux faire comme ça

$folder = FileSelectFolder(....)
$folder = StringRegExpReplace($folder, '(?<=\{)|(?=\})', "\\")
;Msgbox(0,"", $folder)
send ("LGPO.exe /g " & $folder, 1)

Re: AUTOIT et LocalGPo

Posté : dim. 26 août 2018 13:51
par cheap66
Merci mikell,

tu avais raison, il n'y avait pas besoin de rajouter les \.

ça fonctionne à merveille.

Je te remercie encore.