Puis-je récupérer les variables d'environnement dans vbscript script WSH?
Est possible de lire les variables d'environnement système Windows Scripting Host (WSH) script VBS?
(Je suis en train d'écrire un script VBScript à l'aide de Windows Scripting Host pour tâche d'un régulateur de vitesse et voulez prendre le projet de construire l'URL.)
OriginalL'auteur mike nelson | 2009-05-24
Vous devez vous connecter pour publier un commentaire.
Voici un exemple (tiré de ici):
OriginalL'auteur M4N
De ici ...
Aussi, beaucoup plus détails sur TechNet.
OriginalL'auteur JP Alioto
Les questions /réponses sont toutes utiles, mais permettez-moi de tenter une résumé pragmatique:
En règle générale, vous souhaitez la processus actuel de définition d'une variable d'environnement:
C'est l'équivalent de (notez l'absence de
%
autour de le nom de la variable):mise en garde: N'oubliez pas de l'
("Process)
partie: si vous le faites, vous aurez la système champ d'application de la définition de la variable; voir ci-dessous..ExpandEnvironmentStrings
est conceptuellement plus simple et plus souple: Il peut s'élargir arbitraire chaînes avec intégré (%
-joint), environnement-les références à des variables; par exemple:En de rares occasions, vous pourriez avoir à d'accès de l'environnement-les définitions de variables à partir d'un la portée spécifique (autres que le processus actuel).
Remarque: Comme indiqué ci-dessus, l'omission de la portée de l'argument par défaut à la
System
portée.Mise en garde: l'Accès à un valeur de cette façon, ne pas développez: Environnement-les valeurs de la variable peut être imbriquée: ils peuvent se référer à autres variables d'environnement.
Dans l'exemple ci-dessus, la valeur de retour est
%SystemRoot%\TEMP
, qui contient le non développés référence à%SystemRoot%
.Afin d'élargir le résultat, le passer à
.ExpandEnvironmentStrings()
, comme démontré ci-dessus.OriginalL'auteur mklement0
OriginalL'auteur STTR
Cela fonctionne pour moi:
ou de la coque:
ou de variable d'environnement (cela devrait fonctionner, mais quand je l'ai testé c'était mal!):
CreateObject("WScript.Network"
ne fournit pas de générique à l'environnement de la variable d'accès, il arrive juste à exposer les 3 valeurs de propriétés que l'on retrouve dans les variables d'environnement:ComputerName
,UserDomain
, etUserName
. La raison que votre dernier exemple ne fonctionne pas, c'est queWshShell.Environment
est le même queWshShell.Environment("System")
, et%USERNAME%
n'est pas défini dans le système portée.OriginalL'auteur Rafiki