2009-05-24 12 views

Antwort

20

Hier ist ein Beispiel (aus here):

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

Von 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") 

Auch viel mehr 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

Dies funktioniert für mich:

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

oder aus der Schale:

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

oder von der Umwelt Variable (es sollte funktionieren, b ut, wenn ich getestet, es war falsch):

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

Das von CreateObject ("WScript.Network" ') ([https://msdn.microsoft.com/en-us/library/s6wt333f (v = vs.84) .aspx) zurückgegebene [Objekt] stellt generisch nicht bereit Umgebungsvariabler Zugriff, es werden nur 3 Werte als Eigenschaften angezeigt, die sich auch in Umgebungsvariablen widerspiegeln: 'ComputerName',' UserDomain' und 'UserName'. Der Grund dafür, dass Ihr letztes Beispiel nicht funktioniert, ist' WshShell. Environment ist dasselbe wie 'WshShell.Environment (" System ")', und '% USERNAME%' ist nicht im Bereich _system_ definiert. – mklement0

4

Die bestehenden Antworten alle nützlich sind, aber lassen Sie mich eine pragmatische Zusammenfassung versuchen:

Typischerweise wollen Sie der aktuellen Definition des Prozess eine Umgebungsvariable:

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

Dies ist das Äquivalent (man beachte das Fehlen von % aro und der Variablenname):

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

Caveat: Den ("Process) Teil nicht auslassen: wenn Sie das tun, werden Sie die System Anwendungsbereich der Definition der Variablen erhalten; siehe unten.

.ExpandEnvironmentStrings ist vom Konzept her einfacher und flexibler: Es kann beliebige Strings mit eingebettet (% -enclosed) Umwelt-Variablenreferenzen erweitern; z.B .:

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

In seltenen Fällen Sie Zugang umweltVariablenDefinitionen von einem spezifischen Anwendungsbereich (anders als der aktuelle Prozess ist) aufweisen kann.

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

Anmerkung: Wie bereits erwähnt, auf den System Umfang den Umfang Argument defaults weggelassen.

Caveat: Wert auf diese Weise Zugriff auf nicht erweitern es: Umwelt-Variablenwerte können verschachtelte sein: sie andere Umgebungsvariablen beziehen.
Im obigen Beispiel ist der Rückgabewert %SystemRoot%\TEMP, der die nicht erweiterte Referenz auf %SystemRoot% enthält.
Um das Ergebnis zu erweitern, übergeben Sie es wie oben gezeigt an .ExpandEnvironmentStrings().