OVH Cloud OVH Cloud

Définition variable environnement DOS en VBSCRIPT

3 réponses
Avatar
Frederic.Mace
Bonjour,

J'ai ecrit un petit script en VBS pour v=E9rifier si un utilisateur est
membre d'un groupe et je souhaite si la condition est v=E9rifi=E9e
d=E9finir une variable utilisable sous DOS par d'autres programmes
(genre psExec).

Voila le bout de code:

Set objShell =3D CreateObject("WScript.Shell")
strCommand =3D "CMD.EXE /K SET INTFOUND=3DTOTO"

strComputer =3D Wscript.Arguments(0)
strGroup =3D Wscript.Arguments(1)
strUserName =3D Wscript.Arguments(2)

Set objGroup =3D GetObject("WinNT://" & strComputer & "/" & strGroup &
",group")

For Each objMember In objGroup.Members
If lcase(objMember.Name) =3D lcase(strUserName) Then
WScript.Echo objMember.Name
Set objShellScriptExec =3D objShell.Exec(strCommand)
End If
Next


Le programme fonctionne, mais ma variable ne s'incrit pas dans les
variables d'environnment DOS.

Quand je tape la commande "CMD.EXE /C SET INTFOUND=3DTOTO" ma variable
est correctement d=E9finie, quand la m=EAme commande est lanc=E9e =E0
partir du script VBS ma variable n'est pas d=E9finie.

Merci d'avance;

Fred.

3 réponses

Avatar
Gloops
[Mémoriser par script dans une variable d'environnement l'appartenance à
un groupe]

Bonjour,

Je n'ai pas la réponse, mais une petite remarque : CMD crée la variable
dans sa copie de l'environnement. Si tu relances une nouvelle session
CMD derrière, tu ne la trouves pas dedans.

Peut-être pour cette raison, l'objet WshEnvironment, retourné par la
propriété Environment de WshScript, comporte les méthodes Count et
Remove, mais pas Add.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/af2cc3bc-f468-4d76-be12-1472fe8abef2.asp

Il n'est pas encore exclu qu'il soit plus facile de mémoriser
l'information en l'écrivant dans un fichier (par exemple un cookie),
cela étant attention que pour le faire par un script depuis un site
distant, des considérations de sécurité entrent en ligne de compte (et
certainement aussi si on voulait modifier l'environnement de manière
stable).

Si la question est d'exécuter un programme en ligne de commandes, je me
demande jusqu'à quel point il ne serait pas avantageux de placer un
programme pour faire le test juste au bon moment -mais là, peut-être me
perds-je en conjectures ...
______________________________________________________
Bonjour,

J'ai ecrit un petit script en VBS pour vérifier si un utilisateur est
membre d'un groupe et je souhaite si la condition est vérifiée
définir une variable utilisable sous DOS par d'autres programmes
(genre psExec).

Voila le bout de code:

Set objShell = CreateObject("WScript.Shell")
strCommand = "CMD.EXE /K SET INTFOUND=TOTO"

strComputer = Wscript.Arguments(0)
strGroup = Wscript.Arguments(1)
strUserName = Wscript.Arguments(2)

Set objGroup = GetObject("WinNT://" & strComputer & "/" & strGroup &
",group")

For Each objMember In objGroup.Members
If lcase(objMember.Name) = lcase(strUserName) Then
WScript.Echo objMember.Name
Set objShellScriptExec = objShell.Exec(strCommand)
End If
Next


Le programme fonctionne, mais ma variable ne s'incrit pas dans les
variables d'environnment DOS.

Quand je tape la commande "CMD.EXE /C SET INTFOUND=TOTO" ma variable
est correctement définie, quand la même commande est lancée à
partir du script VBS ma variable n'est pas définie.

Merci d'avance;

Fred.



Avatar
Jacques Barathon [MS]
"Gloops" a écrit dans le message de news:

[Mémoriser par script dans une variable d'environnement l'appartenance à
un groupe]

Bonjour,

Je n'ai pas la réponse, mais une petite remarque : CMD crée la variable
dans sa copie de l'environnement. Si tu relances une nouvelle session CMD
derrière, tu ne la trouves pas dedans.

Peut-être pour cette raison, l'objet WshEnvironment, retourné par la
propriété Environment de WshScript, comporte les méthodes Count et Remove,
mais pas Add.


Il n'y a pas de méthode Add, mais tu peux assigner une nouvelle variable
directement avec la propriété Item:

$wsh = new-object -com wscript.shell
$wsh.environment("system").item("Test") = "Ceci est un test"

L'exemple ci-dessus est écrit en PowerShell, mais tu devrais pouvoir
facilement l'adapter en vbscript. Une fois ces quelques lignes exécutées,
ouvre une nouvelle invite de commandes pour vérifier que la variable Test
fait bien partie de l'environnement.

Tu peux utiliser "user" à la place de "system" si tu veux que la nouvelle
variable soit propre au profil de l'utilisateur en cours.

Jacques

Avatar
906507N
Gloops wrote in
news::

______________________________________________________
Bonjour,

J'ai ecrit un petit script en VBS pour vérifier si un utilisateur est
membre d'un groupe et je souhaite si la condition est vérifiée
définir une variable utilisable sous DOS par d'autres programmes
(genre psExec).

Voila le bout de code:

Set objShell = CreateObject("WScript.Shell")
strCommand = "CMD.EXE /K SET INTFOUND=TOTO"

strComputer = Wscript.Arguments(0)
strGroup = Wscript.Arguments(1)
strUserName = Wscript.Arguments(2)

Set objGroup = GetObject("WinNT://" & strComputer & "/" & strGroup &
",group")

For Each objMember In objGroup.Members
If lcase(objMember.Name) = lcase(strUserName) Then
WScript.Echo objMember.Name
Set objShellScriptExec = objShell.Exec(strCommand)
End If
Next


Le programme fonctionne, mais ma variable ne s'incrit pas dans les
variables d'environnment DOS.

Quand je tape la commande "CMD.EXE /C SET INTFOUND=TOTO" ma variable
est correctement définie, quand la même commande est lancée à
partir du script VBS ma variable n'est pas définie.

Merci d'avance;

Fred.





bonjour,
voici une methode

fichier x.vbs :

wscript.echo "Hello"

execution sous dos :

for /F "usebackq" %a in (`cscript /nologo x.vbs`) do set xxx=%a
echo %xxx%