Windows Scripting Host(WSH)VBSスクリプトでシステム環境変数を読み取ることはできますか?vbscript WSHスクリプトで環境変数を選択できますか?
は(私はクルーズコントロールのためのタスクのためのWindowsスクリプティングホストを使用して、プロジェクトのビルドURLをピックアップするVBScriptを書いています。)hereから
Windows Scripting Host(WSH)VBSスクリプトでシステム環境変数を読み取ることはできますか?vbscript WSHスクリプトで環境変数を選択できますか?
は(私はクルーズコントロールのためのタスクのためのWindowsスクリプティングホストを使用して、プロジェクトのビルドURLをピックアップするVBScriptを書いています。)hereから
ここで(hereから取られた)例を示します
Set oShell = CreateObject("WScript.Shell")
user=oShell.ExpandEnvironmentStrings("%UserName%")
comp=oShell.ExpandEnvironmentStrings("%ComputerName%")
WScript.Echo user & " " & comp
...
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")
をまた、多くのmore detail on TechNet。
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
これは私の作品:
Dim objNetwork
Set objNetwork = CreateObject("WScript.Network")
MsgBox objNetwork.UserName
またはシェルから:
Set wshShell = WScript.CreateObject("WScript.Shell")
strUserName = wshShell.ExpandEnvironmentStrings("%USERNAME%")
や環境から変数(それは動作するはずです、b私はそれが間違っていたテストUT):!
Set WshShell = CreateObject("WScript.Shell")
Set WshEnv = WshShell.Environment
MsgBox "USERNAME=" & WshEnv.Item("USERNAME")
既存の答えは、すべての便利ですが、私は実用的な要約しようとしてみましょう:通常
を、あなたはの現在のプロセスの定義をしたいです環境変数:
CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%")
これは%
AROの不在に注意してください(と同等です)変数名をUND:
CreateObject("WScript.Shell").Environment("Process").Item("TEMP")
警告:("Process)
一部を省略しないでください:あなたが行う場合は、変数のシステム範囲の定義を取得します。下記参照。
.ExpandEnvironmentStrings
は、概念的に単純でより柔軟である:それは、埋め込み(%
-enclosed)環境変数参照と任意文字列を拡張することができます。例えばあなたが特定のスコープ(現在のプロセス以外)からアクセス環境変数の定義する必要がありますまれに:
CreateObject("WScript.Shell").ExpandEnvironmentStrings("My name is %USERNAME%")
。
sScope = "System" ' May be: "Process", "User", "Volatile", "System"
CreateObject("WScript.Shell").Environment(sScope).Item("TEMP")
注:上記のように、System
スコープに範囲引数のデフォルトを省略します。
警告:を展開しませんこの方法で値にアクセスするには、それは:環境変数の値は、ネストされたことができます。彼らは他の環境変数を参照することができます。
上記の例では、戻り値は%SystemRoot%\TEMP
であり、が展開されています。を参照して%SystemRoot%
を参照しています。
結果を展開するには、上記のとおり、.ExpandEnvironmentStrings()
に渡します。
[CreateObject( "WScript.Network" '(https://msdn.microsoft.com/en-us/library/s6wt333f(v = vs.84).aspx)によって返されるオブジェクトは、ジェネリック'ComputerName'、' UserDomain'、 'UserName'などの環境変数に反映されるプロパティとして3つの値を公開するだけです。最後の例がうまくいかない理由は、' WshShell。 Environment'は 'WshShell.Environment(" System ")と同じで、'%USERNAME% 'は_system_スコープに定義されていません。 – mklement0