[..] Exécuter macro AutoIt sur poste distant
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[..] Exécuter macro AutoIt sur poste distant
Salut tout le monde.
Voila pour un programme j'aurais besoin de savoir ou pointe le répertoire Appdata d'un poste distant
la macro @AppDataDir me permet exactement ce que je veux faire mais sur le poste qui exécute l'exe.
Comment pourrais je faire exécuter cette macro sur un poste distant et récupérer le résultat sur le poste qui exécute le programme ?
Ou alors est ce qu'il vaut mieux passer en dos avec @Compspec et les commandes qui permettent de récupérer les résultat ?
merci d'avance.
Voila pour un programme j'aurais besoin de savoir ou pointe le répertoire Appdata d'un poste distant
la macro @AppDataDir me permet exactement ce que je veux faire mais sur le poste qui exécute l'exe.
Comment pourrais je faire exécuter cette macro sur un poste distant et récupérer le résultat sur le poste qui exécute le programme ?
Ou alors est ce qu'il vaut mieux passer en dos avec @Compspec et les commandes qui permettent de récupérer les résultat ?
merci d'avance.
Re: [..] executer macro autoit sur poste distant
Le répertoire AppData est propre à chaque utilisateur, il n'est pas propre à l'ordinateur.
@AppData correspond au chemin propre à l'utilisateur qui exécute le script, non pas à l'ordinateur.
Quel est le besoin ? Copier des fichiers ?
As-tu un compte admin pour te connecter sur le poste distant ? Est-ce que le poste distant est membre d'un domaine ?
@AppData correspond au chemin propre à l'utilisateur qui exécute le script, non pas à l'ordinateur.
Quel est le besoin ? Copier des fichiers ?
As-tu un compte admin pour te connecter sur le poste distant ? Est-ce que le poste distant est membre d'un domaine ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Re: [..] executer macro autoit sur poste distant
jguinch a écrit :Le répertoire AppData est propre à chaque utilisateur, il n'est pas propre à l'ordinateur.
@AppData correspond au chemin propre à l'utilisateur qui exécute le script, non pas à l'ordinateur.
Quel est le besoin ? Copier des fichiers ?
As-tu un compte admin pour te connecter sur le poste distant ? Est-ce que le poste distant est membre d'un domaine ?
je suis admin pour me connecter au poste distant qui est sur un domaine.
j'ai besoin de lire un fichier de log qui est dans appdata du poste distant.
Sur certains poste j'ai plusieurs profil
par exemple un profil Administrateur, profil Administrateur.LOCAL....
il faudrait que je sache lequel est utilisé sur le poste distant pour chercher le log dans le bon répertoire.
Re: [..] executer macro autoit sur poste distant
Est-ce que tu peux accéder à la base de registre à distance ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Re: [..] executer macro autoit sur poste distant
oui faudra juste gérer le démarrage du service registre a distance si il est pas lancé.jguinch a écrit :Est-ce que tu peux accéder à la base de registre à distance ?
Re: [..] executer macro autoit sur poste distant
Si c'est le même utilisateur des deux côtés, tu peux essayer ça :
Apparemment, pas besoin de pouvoir accéder à la base de registre à distance.
► Afficher le texte
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Re: [..] executer macro autoit sur poste distant
ok par contre ce ne sera jamais le même utilisateur de chaque coté.
Généralement je lancerai ça depuis un poste client vers un serveur.
Donc sur le poste client il y a une session par exemple "User01" et sur le serveur une session "administreur.nom_du_domaine"
Généralement je lancerai ça depuis un poste client vers un serveur.
Donc sur le poste client il y a une session par exemple "User01" et sur le serveur une session "administreur.nom_du_domaine"
Re: [..] executer macro autoit sur poste distant
Désolé, je ne comprends plus vraiment le besoin...
- tu veux lancer ton programme depuis n'importe quel poste client (connecté avec n'importe quel utilisateur)
- tu veux que ton programme aille lire un fichier de log qui se trouve sur le serveur, dans le profil administrateur
-> est-ce que ce sera toujours dans le profil administrateur ?
-> tu vas avoir un problème de droits pour que ton programme (qui s'exécute sous un compte utilisateur) aille lire un fichier dans le profil administrateur
-> est-ce que tu peux exécuter le programme en tant qu'un compte admin ?
- tu veux lancer ton programme depuis n'importe quel poste client (connecté avec n'importe quel utilisateur)
- tu veux que ton programme aille lire un fichier de log qui se trouve sur le serveur, dans le profil administrateur
-> est-ce que ce sera toujours dans le profil administrateur ?
-> tu vas avoir un problème de droits pour que ton programme (qui s'exécute sous un compte utilisateur) aille lire un fichier dans le profil administrateur
-> est-ce que tu peux exécuter le programme en tant qu'un compte admin ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Re: [..] executer macro autoit sur poste distant
en gros depuis un poste utilisateur (sans droits admin) je lance un programme qui va lire un fichier de log dans le profil administrateur du serveur.
Avant de lancer la lecture du log il y a une gui ou je spécifie le nom d'utilisateur et le le mot de passe admin pour pouvoir accéder au serveur sans soucis.
cette partie fonctionne très bien.
Le problème est que sur certains serveurs j'ai plusieurs profil, un profil "Administrateur", un profil "Administrateur.nom_du_domaine"...
Il faudrait que je sache dans lequel est mon fichier de log.
Avant de lancer la lecture du log il y a une gui ou je spécifie le nom d'utilisateur et le le mot de passe admin pour pouvoir accéder au serveur sans soucis.
cette partie fonctionne très bien.
Le problème est que sur certains serveurs j'ai plusieurs profil, un profil "Administrateur", un profil "Administrateur.nom_du_domaine"...
Il faudrait que je sache dans lequel est mon fichier de log.
Re: [..] executer macro autoit sur poste distant
l'idée que j'avais sinon est de lister tous les répertoire que j'ai dans C:\USERS et chercher mon log dans tout ceux qui s'appel Administrateur
Re: [..] Exécuter macro AutoIt sur poste distant
Désolé, j'ai pas trop le temps ces prochains jours (et ce soir non plus)...
Ce que tu peux faire, c'est effectivement chercher dans les différents répertoires. Ca sera peut-être un peu long, mais bon, si tu sais exactement où regarder dans le profil ça devrait aller.
Sinon, juste une idée : tu pourrais, après avoir demandé le login/mot de passe admin, lancer ton exécutable avec le compte admin. Ce permettrait d'exécuter le bout de code que j'ai posté... Bon, il faut (forcément) que le compte en question soit un compte du domaine (mais je ne sais pas si tu parles de compte admin local du serveur ou compte admin du domaine).
Si tu parviens à démarrer le service RemoteRegistry, ça sera plus simple en accédant à la base de registre. Pour y accéder à distance, il suffit de spécifier le nom de machine :
RegRead("\\NOMDUPOSTE\HKEY_LOCAL_MACHINE\...", "clé")
Pour spécifier un login/mot de passe pour accéder à la base de registre à distance, il suffit de connecter un lecteur réseau en tant que l'utilisateur voulu (admin en l'occurence).
L'emplacement des profils est défini dans HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\Default
Chaque clé correspond à un SID : celui de l'administrateur local (si c'est ce que tu veux) commence par S-1-5-21 et fini par -500.
En local, ça donne ça :
Pour configurer et démarrer le service à distance, tu peux utiliser psexec, ou même la commande SC avec un compte adapté.
Voilà, désolé pour le tout en vrac, je suis un peu à la bourre...
Ce que tu peux faire, c'est effectivement chercher dans les différents répertoires. Ca sera peut-être un peu long, mais bon, si tu sais exactement où regarder dans le profil ça devrait aller.
Sinon, juste une idée : tu pourrais, après avoir demandé le login/mot de passe admin, lancer ton exécutable avec le compte admin. Ce permettrait d'exécuter le bout de code que j'ai posté... Bon, il faut (forcément) que le compte en question soit un compte du domaine (mais je ne sais pas si tu parles de compte admin local du serveur ou compte admin du domaine).
Si tu parviens à démarrer le service RemoteRegistry, ça sera plus simple en accédant à la base de registre. Pour y accéder à distance, il suffit de spécifier le nom de machine :
RegRead("\\NOMDUPOSTE\HKEY_LOCAL_MACHINE\...", "clé")
Pour spécifier un login/mot de passe pour accéder à la base de registre à distance, il suffit de connecter un lecteur réseau en tant que l'utilisateur voulu (admin en l'occurence).
L'emplacement des profils est défini dans HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\Default
Chaque clé correspond à un SID : celui de l'administrateur local (si c'est ce que tu veux) commence par S-1-5-21 et fini par -500.
En local, ça donne ça :
► Afficher le texte
Voilà, désolé pour le tout en vrac, je suis un peu à la bourre...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Re: [..] Exécuter macro AutoIt sur poste distant
ouai pour lire le registre j'avais plutôt fait un runas avec la macro @compspec pour utiliser la commande regquery.
comme ça l'authentification est géré directement.
Je vais voir si je trouve comment lister tous mes répertoires.
merci pour l'aide
Edit:
J'ai commencé en utilisant le listing des répertoires
j'ai fait ce code pour lister mes répertoires contenant "administrateur" et me renommer le fichier de log
comme ça l'authentification est géré directement.
Je vais voir si je trouve comment lister tous mes répertoires.
merci pour l'aide
Edit:
J'ai commencé en utilisant le listing des répertoires
j'ai fait ce code pour lister mes répertoires contenant "administrateur" et me renommer le fichier de log
Code : Tout sélectionner
Func listfolder()
Local $aFileList = _FileListToArray($test, "Administrateur*")
;~ _ArrayDisplay($aFileList, "$aFileList")
$numadmin = $aFileList [0]
For $i = 1 To $numadmin
$admin1 = $aFileList [$i]
$NomPC = "pc"
$pathAdmin1 = "\\" & $NomPC & "\c$\users\" & $admin1 & "\AppData\Roaming\testLogfile.log"
If FileExists($pathAdmin1) Then
FileMove("\\" & $NomPC & "\c$\users\" & $admin1 & "\AppData\Roaming\Test\testLogfile.log", "\\" & $NomPC & "\c$\users\" & $admin1 & "\AppData\Roaming\test\testLogfile2.log", 1)
Else
;~ MsgBox(4096, "path:", "pas de log")
EndIf
Next
EndFunc

