2009-05-24 20 views

Respuesta

20

He aquí un ejemplo (tomado de here):

Set oShell = CreateObject("WScript.Shell") 
user=oShell.ExpandEnvironmentStrings("%UserName%") 
comp=oShell.ExpandEnvironmentStrings("%ComputerName%") 
WScript.Echo user & " " & comp 
7

De here ...

Set WshShell = WScript.CreateObject("WScript.Shell") 

Set WshProccessEnv = WshShell.Environment("Process") 
Set WshSysEnv = WshShell.Environment("System") 

Wscript.Echo WshSysEnv("NUMBER_OF_PROCESSORS") 
Wscript.Echo WshProccessEnv("Path") 

Además, gran parte más detail on TechNet.

3
Set WshShell = CreateObject("WScript.Shell")  
Set WshEnv = WshShell.Environment 
WScript.Echo "WINDIR=" & WshEnv.Item("WINDIR") & vbCrLf & vbCrLf 
Set WshShell = CreateObject("WScript.Shell") 
WScript.Echo "Environment System:"    & vbCrLf & _ 
     "..............................................." 

For Each IEnv In WshShell.Environment("System") 
    WScript.Echo IEnv 
Next 

WScript.Echo vbCrLf & "Environment User:"  & vbCrLf & _ 
     "..............................................." 

For Each IEnv In WshShell.Environment("User") 
    WScript.Echo IEnv 
Next 

WScript.Echo vbCrLf & "Environment Volatile:" & vbCrLf & _ 
     "..............................................." 

For Each IEnv In WshShell.Environment("Volatile") 
    WScript.Echo IEnv 
Next 

WScript.Echo vbCrLf & "Environment Process:" & vbCrLf & _ 
     "..............................................." 

For Each IEnv In WshShell.Environment("Process") 
    WScript.Echo IEnv 
Next 
-1

Esto funciona para mí:

Dim objNetwork 
Set objNetwork = CreateObject("WScript.Network") 
MsgBox objNetwork.UserName 

o de la cáscara:

Set wshShell = WScript.CreateObject("WScript.Shell") 
strUserName = wshShell.ExpandEnvironmentStrings("%USERNAME%") 

o desde el entorno variable (debería funcionar, b ut cuando probé que estaba mal):

Set WshShell = CreateObject("WScript.Shell") 
Set WshEnv = WshShell.Environment 
MsgBox "USERNAME=" & WshEnv.Item("USERNAME") 
+0

El [objeto devuelto por 'CreateObject (" WScript.Network "'] (https://msdn.microsoft.com/en-us/library/s6wt333f (v = vs.84) .aspx) no proporciona genéricos acceso a variable de entorno, sucede que expone 3 valores como propiedades que también se reflejan en variables de entorno: 'ComputerName',' UserDomain', y 'UserName'. La razón por la que su último ejemplo no funciona es' WshShell. Environment' es lo mismo que 'WshShell.Environment (" System ")', y '% USERNAME%' no está definido en _system_ scope. – mklement0

4

Las respuestas existentes son útiles, pero me dejaron intentar una Resumen pragmática:

Normalmente desea definición del del actual proceso de una variable de entorno:

CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%") 

Este es el equivalente de (nótese la ausencia de % aro und el nombre de variable):

CreateObject("WScript.Shell").Environment("Process").Item("TEMP") 

Advertencia: No omita la parte ("Process): si lo hace, obtendrá definición del sistema de del ámbito de la variable; vea abajo.

.ExpandEnvironmentStrings es conceptualmente simple y más flexible: Se puede ampliar arbitrarias cuerdas con incrustados (% con cerramiento) referencias-variable de entorno; ej .:

CreateObject("WScript.Shell").ExpandEnvironmentStrings("My name is %USERNAME%") 

En raras ocasiones puede que tenga que acceso definiciones favorables al medio variable de un ámbito específico (que no sea el actual proceso de).

sScope = "System" ' May be: "Process", "User", "Volatile", "System" 
    CreateObject("WScript.Shell").Environment(sScope).Item("TEMP") 

Nota: Como se ha señalado anteriormente, omitiendo los valores por defecto de los argumentos alcance al alcance System.

Advertencia: Acceso a un valor de esta manera no ampliar que: los valores del medio variable puede ser anidada : pueden referirse a otras variables de entorno .
En el ejemplo anterior, el valor de retorno es %SystemRoot%\TEMP, que contiene sin expandir referencia a %SystemRoot%.
Para expandir el resultado, páselo a .ExpandEnvironmentStrings(), como se demostró anteriormente.

Cuestiones relacionadas