Aide Explication script vbs (getenvironnement)

Aide Explication script vbs (getenvironnement) - VB/VBA/VBS - Programmation

Marsh Posté le 14-02-2006 à 15:24:57    

Bonjour
Voila jai un script a comprendre avec plein de fonctions/sub...
Mais cette fonction (getenvirnomment) me bloque et est utilisé dans tout le script.
Si il y a qqn qui peut m'aider (à quoi cela correspond, variables ce que ça fait...) ... Merci. ++
 

Code :
  1. Set WshShell = WScript.CreateObject("WScript.Shell" )
  2. Set WshSysEnv = WshShell.Environment("SYSTEM" )
  3. function GetEnvironnement(Noyau, Variable)
  4. Set WshSysEnv = WshShell.Environment(noyau)
  5. ret=WshSysEnv(Variable)
  6. Set WshSysEnv = nothing'
  7. GetEnvironnement = ret
  8. end function

Reply

Marsh Posté le 14-02-2006 à 15:24:57   

Reply

Marsh Posté le 14-02-2006 à 15:45:39    

La huitième ligne permet d'affecter la valeur de la variable ret à la valeur de retour de la fonction.
 
C'est une convention qui existe aussi dans beaucoup d'autres langages, comme par exemple le C.
Dans les procédures en asssembleur, la valeur de retour est mise dans le registre AX.
Dans les fonctions des langages plus évolués, où le registre AX est masqué, la valeur de retour est mise dans une variable qui porte le nom de la fonction (et comme par hasard, la taille de cette valeur de retour est de la taille d'un entier, ou d'un pointeur, soit la taille de AX ou EAX).
 
Edit : Je m'aperçois que je me suis focalisé sur la huitième ligne, parce qu'elle apparait en rouge, mais en fait, c'est peut-être autre chose que tu ne comprends pas. Est-ce que c'est la huitième ligne ou une autre ligne qui pose problème ? Si c'est une autre, laquelle ?


Message édité par olivthill le 14-02-2006 à 15:48:27
Reply

Marsh Posté le 14-02-2006 à 16:54:09    

Je pense que la fonction GetEnvironnement() renvoit la valeur de la variable d'environnement passée en second paramètre.
Comme le path du système par exemple. Ou des variables path d'un compilateur, etc.
D'une manière générale, sous Windows ça renvoit les valeurs de variables d'environnement définies par la commande SET, par exemple (ou l'interface idoine)


Message édité par tegu le 14-02-2006 à 16:56:44
Reply

Marsh Posté le 14-02-2006 à 21:04:40    

Oui, tu a raison tegu.
Cependant, je précise pour Jojik27 qu'il existe quatre types de variable d'environnement qui sont : system, user, process, et volatile.
Donc, il peut exister, par exemple, un PATH au niveau système, au niveau de l'utilisateur, etc. C'est pour cela qu'il faut procéder en deux étapes : 1. préciser dans quel contexte (system, user, ....), et 2. pour quelle variable d'environnement.

Reply

Marsh Posté le 15-02-2006 à 10:08:05    

Ba voilà merci beaucoup en fait j'avais besoin de comprendre cette fonction pour comprendre  
MAP "O", GetEnvironnement("USER","serv1" ) & "\user\" & Utilisateur
 
Le USER me bloquait, je savais pas que c'était une variable d'environnement comme tu as dit... donc le path de USER doit être définit préalablement alors?   Cela peut correspondre à quoi?  

Reply

Marsh Posté le 15-02-2006 à 10:16:48    

Dans l'exemple, il n'est pas question d'un "Path" (chemin par défaut), il est question d'une variable d'environnement nommée "serv1", définie dans l'environnement du user (de l'utilisateur, et non pas dans l'environnement du système). Je crois qu'avec les versions modernes de Windows, les variables d'environnement sont stockées dans la base de registre.

Reply

Marsh Posté le 15-02-2006 à 11:21:52    

...................MERCI !
Sérieux j'attends depuis une semaine l'aide du créateur de ce script pr qu'il m'explique... je mets un msg sur le forum...en 2/3 messages c'est réglé ! alors merci encore ... en espérant "réobtenir" ton aide pour un pb futur...  ++++   (c'était bien dans le registre ...)

Reply

Marsh Posté le 16-02-2006 à 10:15:50    

encor moi ^^
jai parlé un peu vite... le lecteur se conecte pour 1 user sUR 1 poste alors que c'est un script placé dans une stratégie de groupe ! jvois pas comment c'est possible !!  le script aurait fonctionné sur un seul pc ou que pour un user, ok! mais là un user sur un PC !... le script peut il être en cause avec une variable quelconque, une ligne oubliée.. etc ou cela n'a rien à voir?

Reply

Marsh Posté le 17-02-2006 à 10:48:55    

c'est un script lancé par GPO c'est ça?
 
je ne sais pas si ça répondra à ta question, mais le script s'éxecute dans ce cas dans le contexte de l'utilisateur c'est normal. Il est placé en tant que script machine ou utilisateur?


---------------
Envie de scripting ? Lisez donc "Scripting Windows" aux Editions Eyrolles ! tout pour apprendre le scripting orienté infrastructure Microsoft, en français dans les textes et exemples.  http://www.eyrolles.com/Informatiq [...] 212116922/
Reply

Marsh Posté le 17-02-2006 à 12:02:47    

IL est placé dans louverture de session de l'utilisateur. (appliqué pour utililsateur du domaine) or le script ne marche que sur un user sur un poste.. mystere.... Lorsque je me connecte avec un autre user ou avec celui qui marche mais sur autre machine >>"erreur nom de réseau introuvable" source "WSHNetwork.MapNetworkDrive" L.11 dans la fonction MAP :
 
 

Code :
  1. Map "G:",  GetEnvironnement("USER","SRV1" ) & "\user\" & Utilisateur
  2. function Map(drv,unc)
  3. dim er
  4. on error resume next
  5. 'err.clear
  6. 'WshNetwork.RemoveNetworkDrive drv
  7. 'er=err.number
  8. 'err.clear
  9. WshNetwork.MapNetworkDrive drv,unc
  10. er=err.number
  11. err.clear
  12. on error goto 0
  13. map=er
  14. end function

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed