OVH Cloud OVH Cloud

Execution à distance d'un VBS

9 réponses
Avatar
Pat
Bonjour à tous,

Je cherche un moyen efficace en VBS de déployer des fichiers à un
emplacement précis sur plusieurs machines distante à partir de mon poste. Je
ne suis pas sur un domaine mais il faut que je renseigne en dur le compte et
le mot de passe Admin dans le script pour me permettre l'accès aux
différentes machines (le mot de passe Admin est identique sur chaque machine).

Je suis un peu néophyte au développement en VBS mais je m'accroche !

Merci encore de votre aide et de votre patience.

9 réponses

Avatar
Jacques Barathon [MS]
"Pat" wrote in message
news:
Bonjour à tous,

Je cherche un moyen efficace en VBS de déployer des fichiers à un
emplacement précis sur plusieurs machines distante à partir de mon poste.
Je
ne suis pas sur un domaine mais il faut que je renseigne en dur le compte
et
le mot de passe Admin dans le script pour me permettre l'accès aux
différentes machines (le mot de passe Admin est identique sur chaque
machine).

Je suis un peu néophyte au développement en VBS mais je m'accroche !


Si tu es néophyte, je te conseillerais d'investir ton énergie directement
dans Windows PowerShell, le nouvel environnement ligne de commande +
scripting pour l'administration de systèmes Windows. Le produit est dans ses
dernières semaines de développement avant la version finale (prévue pour la
fin de l'année). L'installation de la RC2 en français pour XP (32 bits) est
ici:
http://www.microsoft.com/downloads/details.aspx?displaylang=fr&FamilyIDå04a78b-173e-4975-a669-49cf0fec9c07

Pour revenir à ton problème, d'une manière générale il vaut mieux éviter de
mettre un mot de passe (admin qui plus est) dans un script, qu'il s'agisse
de vbs, PowerShell, batch ou autre. Tu as d'autres solutions, d'autant plus
simples dans ton cas où tu as un mot de passe identique pour tous les
comptes admin.

Le principe de base: si le couple utilisateur/mdp de la session en cours sur
la machine locale existe à l'identique sur la machine distante (quels que
soient leurs domaines respectifs), les permissions de l'utilisateur reconnu
par la machine distante sont utilisées. Donc, tu peux ouvrir une session sur
ton poste en tant qu'admin avec le mdp standard, et tu pourras effectuer tes
copies de fichiers sans avoir à explicitement t'authentifier sur chaque
machine.

Si tu ne peux pas (ou ne veux pas) ouvrir de session sur ton poste avec ton
compte admin, tu peux également utiliser la commande runas pour lancer ton
script "en tant que" admin. Tu devras saisir le mot de passe en mode
interactif, puis ton script s'exécutera avec les autorisations requises. La
clé, là encore, c'est que le compte admin que tu utilises pour le runas ait
un nom et un mot de passe identiques à celui présent sur les machines
distantes.

Jacques

Avatar
Oriane
Bonjour Jacques,

J'ai un pb un peu semblable à celui de Pat. Ce qui m'ennuie comme elle c'est de laisser les mots de passe d'admin de domaine en dur dans un script qui sera écrit sur plusieurs machines du domaine... En fait dans mon cas je n'ai pas le choix car c'est l'utiliasteur distant qui va devoir lancer le script.

Aussi, j'ai 2 questions:

- peut-on donner un accès en excéution à un script et pas en création ? PS: je pense pas !!
- peut-on compiler le script en ".exe" ?

Cdt

"Jacques Barathon [MS]" a écrit dans le message de news: uq%
http://www.microsoft.com/downloads/details.aspx?displaylang=fr&FamilyID å04a78b-173e-4975-a669-49cf0fec9c07
"Pat" wrote in message

news:
Bonjour à tous,

Je cherche un moyen efficace en VBS de déployer des fichiers à un
emplacement précis sur plusieurs machines distante à partir de mon poste.
Je ne suis pas sur un domaine mais il faut que je renseigne en dur le compte
et le mot de passe Admin dans le script pour me permettre l'accès aux
différentes machines (le mot de passe Admin est identique sur chaque
machine).


Pour revenir à ton problème, d'une manière générale il vaut mieux éviter de
mettre un mot de passe (admin qui plus est) dans un script, qu'il s'agisse
de vbs, PowerShell, batch ou autre. Tu as d'autres solutions, d'autant plus
simples dans ton cas où tu as un mot de passe identique pour tous les
comptes admin.

Le principe de base: si le couple utilisateur/mdp de la session en cours sur
la machine locale existe à l'identique sur la machine distante (quels que
soient leurs domaines respectifs), les permissions de l'utilisateur reconnu
par la machine distante sont utilisées. Donc, tu peux ouvrir une session sur
ton poste en tant qu'admin avec le mdp standard, et tu pourras effectuer tes
copies de fichiers sans avoir à explicitement t'authentifier sur chaque
machine.

Si tu ne peux pas (ou ne veux pas) ouvrir de session sur ton poste avec ton
compte admin, tu peux également utiliser la commande runas pour lancer ton
script "en tant que" admin. Tu devras saisir le mot de passe en mode
interactif, puis ton script s'exécutera avec les autorisations requises. La
clé, là encore, c'est que le compte admin que tu utilises pour le runas ait
un nom et un mot de passe identiques à celui présent sur les machines
distantes.

Jacques



Avatar
Surfreg_FR
Oriane avait soumis l'idée :
Bonjour Jacques,

J'ai un pb un peu semblable à celui de Pat. Ce qui m'ennuie comme elle c'est
de laisser les mots de passe d'admin de domaine en dur dans un script qui
sera écrit sur plusieurs machines du domaine... En fait dans mon cas je n'ai
pas le choix car c'est l'utiliasteur distant qui va devoir lancer le script.

Aussi, j'ai 2 questions:

- peut-on donner un accès en excéution à un script et pas en création ? PS:
je pense pas !! - peut-on compiler le script en ".exe" ?

Cdt

"Jacques Barathon [MS]" a écrit dans le
message de news: uq%
http://www.microsoft.com/downloads/details.aspx?displaylang=fr&FamilyIDå04a78b-173e-4975-a669-49cf0fec9c07
"Pat" wrote in message

news:
Bonjour à tous,

Je cherche un moyen efficace en VBS de déployer des fichiers à un
emplacement précis sur plusieurs machines distante à partir de mon poste.
Je ne suis pas sur un domaine mais il faut que je renseigne en dur le compte
et le mot de passe Admin dans le script pour me permettre l'accès aux
différentes machines (le mot de passe Admin est identique sur chaque
machine).


Pour revenir à ton problème, d'une manière générale il vaut mieux éviter de
mettre un mot de passe (admin qui plus est) dans un script, qu'il s'agisse
de vbs, PowerShell, batch ou autre. Tu as d'autres solutions, d'autant plus
simples dans ton cas où tu as un mot de passe identique pour tous les
comptes admin.

Le principe de base: si le couple utilisateur/mdp de la session en cours sur
la machine locale existe à l'identique sur la machine distante (quels que
soient leurs domaines respectifs), les permissions de l'utilisateur reconnu
par la machine distante sont utilisées. Donc, tu peux ouvrir une session sur
ton poste en tant qu'admin avec le mdp standard, et tu pourras effectuer tes
copies de fichiers sans avoir à explicitement t'authentifier sur chaque
machine.

Si tu ne peux pas (ou ne veux pas) ouvrir de session sur ton poste avec ton
compte admin, tu peux également utiliser la commande runas pour lancer ton
script "en tant que" admin. Tu devras saisir le mot de passe en mode
interactif, puis ton script s'exécutera avec les autorisations requises. La
clé, là encore, c'est que le compte admin que tu utilises pour le runas ait
un nom et un mot de passe identiques à celui présent sur les machines
distantes.

Jacques



Salut a tous

Et bien je ne sais pas si cela peut vous aidez mais moi j'utilise un
logiciel qui s'appele RemoteExec et qui me permet de lancer a distance
un fichier VBS sur toutes les machines de mon reseau sans copier le
script sur les postes et en tant que Admin ou interactive user....

Surfreg_FR

--
Surfreg


Avatar
Oriane
Bonjour,

"Surfreg_FR" a écrit dans le message de news:
Oriane avait soumis l'idée :
Salut a tous

Et bien je ne sais pas si cela peut vous aidez mais moi j'utilise un
logiciel qui s'appele RemoteExec et qui me permet de lancer a distance
un fichier VBS sur toutes les machines de mon reseau sans copier le
script sur les postes et en tant que Admin ou interactive user....
Non cela ne m'aide pas, parce que justement ce n'est pas moi qui vais décider le lancer le script...


Avatar
Gilles LAURENT
"Oriane" a écrit dans le message de
news:eUjYytM$
| Bonjour,

Bonjour,

| Non cela ne m'aide pas, parce que justement ce n'est pas moi qui vais
| décider le lancer le script...

L'outil CPAU devrait répondre à votre besoin :
http://www.joeware.net/win/free/tools/cpau.htm

Il permet de créer des fichiers chiffrés contenant toutes les
informations nécessaires à l'exécution d'une commande sous une autorité
différente de celle de l'utilisateur.

--
Gilles LAURENT
http://glsft.free.fr
Avatar
Oriane
Merci de votre réponse. Plus basiquement, on m'a indiqué le "script encoder" téléchargeable sur MSDN qui encode le fichier vbs. On le renomme alors *.vbe, et wsh le reconnais et le lance.

Maintenant, j'ai un autre problème. Au départ, je comptais utiliser la commande "netdom move" dans un fichier de commande pour changer un PC de domaine. Je suis passé au vscript car il y a d'autres choses à faire, et que c'est plus facile à débugger. Mais peut-on lancer une commande (en l'occurrence netdom.exe) dans un script wsh ?

Sinon, il y a des commandes vscript qui permettent de joindre un ordi de domaine:
Const JOIN_DOMAIN = 1
Const ACCT_CREATE = 2
Const ACCT_DELETE = 4
Const WIN9X_UPGRADE = 16
Const DOMAIN_JOIN_IF_JOINED = 32
Const JOIN_UNSECURE = 64
Const MACHINE_PASSWORD_PASSED = 128
Const DEFERRED_SPN_SET = 256
Const INSTALL_INVOCATION = 262144

strDomain = "FABRIKAM"
strPassword = "ls4k5ywA"
strUser = "shenalan"

Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName

Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!" & _
strComputer & "rootcimv2:Win32_ComputerSystem.Name='" & _
strComputer & "'")

ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, _
strPassword, strDomain & "" & strUser, NULL, _
JOIN_DOMAIN + ACCT_CREATE)


Mais là, comment savoir sous quel compte lancer ce script ? Un compte d'admin local ?

A+

"Gilles LAURENT" a écrit dans le message de news: e0ryuCN$
"Oriane" a écrit dans le message de
news:eUjYytM$
| Bonjour,

Bonjour,

| Non cela ne m'aide pas, parce que justement ce n'est pas moi qui vais
| décider le lancer le script...

L'outil CPAU devrait répondre à votre besoin :
http://www.joeware.net/win/free/tools/cpau.htm

Il permet de créer des fichiers chiffrés contenant toutes les
informations nécessaires à l'exécution d'une commande sous une autorité
différente de celle de l'utilisateur.

--
Gilles LAURENT
http://glsft.free.fr




Avatar
Gilles LAURENT
"Oriane" a écrit dans le message de
news:%23BiMnvN$
| Merci de votre réponse. Plus basiquement, on m'a indiqué le "script
| encoder" téléchargeable sur MSDN qui encode le fichier vbs. On le
| renomme alors *.vbe, et wsh le reconnais et le lance.

J'attire toutefois votre attention sur le fait que le "script encoder"
ne fait que masquer les lignes de code VBScript. Il n'y a pas de
chiffrement. Ce sera donc un jeu d'enfant de le décoder et donc
problématique si le script contient des informations d'authentification
critiques. A vous d'évaluer les risques ...

--
Gilles LAURENT
http://glsft.free.fr
Avatar
Oriane
"Gilles LAURENT" a écrit dans le message de news: u$UwSAP$
"Oriane" a écrit dans le message de
news:%23BiMnvN$
| Merci de votre réponse. Plus basiquement, on m'a indiqué le "script
| encoder" téléchargeable sur MSDN qui encode le fichier vbs. On le
| renomme alors *.vbe, et wsh le reconnais et le lance.

J'attire toutefois votre attention sur le fait que le "script encoder"
ne fait que masquer les lignes de code VBScript. Il n'y a pas de
chiffrement. Ce sera donc un jeu d'enfant de le décoder et donc
problématique si le script contient des informations d'authentification
critiques. A vous d'évaluer les risques ...
Oui j'en suis conscient. Mais qui dit chiffrement (forcément symétrique ici) dit stockage de la clef, et après il faut encore la cacher quelque part. Et puis moi je dois copier le script sur chaque poste du domaine à migrer, donc il n'est pas question de devoir en plus utiliser des programmes de "déchiffrement" sur ces mêmes postes client avec une clef elles-même cachée quelque part...


Avatar
Jean-Claude BELLAMY
Dans le message :u8RKtFP$,
Oriane a pris la peine d'écrire ce qui suit :
"Gilles LAURENT" a écrit dans le message de news:
u$UwSAP$
"Oriane" a écrit dans le message de
news:%23BiMnvN$
Merci de votre réponse. Plus basiquement, on m'a indiqué le "script
encoder" téléchargeable sur MSDN qui encode le fichier vbs. On le
renomme alors *.vbe, et wsh le reconnais et le lance.


J'attire toutefois votre attention sur le fait que le "script
encoder" ne fait que masquer les lignes de code VBScript. Il n'y a
pas de chiffrement. Ce sera donc un jeu d'enfant de le décoder et
donc problématique si le script contient des informations
d'authentification critiques. A vous d'évaluer les risques ...
Oui j'en suis conscient. Mais qui dit chiffrement (forcément

symétrique ici) dit stockage de la clef, et après il faut encore la
cacher quelque part.


Tu peux utiliser un chiffrement asymétrique, avec paires de clefs publique
et privée (genre RSA).

En effet, j'insiste là-dessus, le "Script Encoder", comme son nom l'indique,
ne fait que du CODAGE !
Il N'Y A PAS DE CLEF de chiffrement, mais un simple algorithme qui va
"permuter" et "décaler" des séquences de caractères.

J'ai d'ailleurs écrit, avec l'aide de Jean-Luc ANTOINE, un script qui décode
à la volée n'importe quel script vbe,je,asp,html,...encodé par le "Script
Encoder" de MS.
http://www.bellamyjc.org/fr/vbsdownload.html#scrdecode


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr