web-dev-qa-db-ja.com

vbscript WSHスクリプトで環境変数を取得できますか?

Windows Scripting Host(WSH)VBSスクリプトでシステム環境変数を読み取ることはできますか?

(私はクルーズコントロールのタスクにWindows Scripting Hostを使用してVBScriptを書いていて、プロジェクトのビルドURLを取得したいと考えています。)

18
mike nelson

以下に例を示します( here から取得):

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

から ここ ...

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

また、はるかに TechNetの詳細

7
JP Alioto

既存の回答はすべて役に立ちますが、プラグマティックサマリーを試してみましょう:

通常、必要なのは現在のプロセス環境変数の定義です。

_CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%")
_

これは、(変数名の前後に_%_がないことに注意してください)と同等です。

_CreateObject("WScript.Shell").Environment("Process").Item("TEMP")
_

警告:_("Process)_の部分は省略しないでください。省略すると、変数のsystemスコープの定義が表示されます。下記参照。

_.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スコープになります。

警告:この方法で値にアクセスすることはできませんexpand it:環境変数の値はnestedである可能性がありますother環境変数。
上記の例では、戻り値は_%SystemRoot%\TEMP_であり、これには_%SystemRoot%_へのnexpanded参照が含まれています。
上記のように、結果を展開するには、それを.ExpandEnvironmentStrings()に渡します。

5
mklement0
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
4
STTR