Могу ли я подобрать переменные окружения в сценарии vbscript WSH?

Все существующие ответы полезны, но wsh позвольте мне сделать прагматическое резюме:

Обычно vbscript требуется определение переменной среды текущего процесса:

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

Это эквивалент vbs (обратите внимание на отсутствие vbs % вокруг имени переменной):

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

Предостережение: не пропускайте часть ("Process): в этом случае вы получите определение переменной в области system; см. ниже.

.ExpandEnvironmentStrings концептуально проще и гибче: он windows-script-host может расширять произвольные строки с windows-script-host помощью встроенного (% -enclosed) окружения- ссылки environment-variables на переменные; например:

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

В environment-variables редких случаях вам может env потребоваться доступ к определениям переменных среды из определенной области (кроме области wscript текущего процесса).

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

Примечание. Как wsh указано выше, при отсутствии env аргумента области действия vbscript по умолчанию используется windows-script-host область действия System.

Предостережение: доступ vbscript к значению таким образом env не расширяет его: значения переменных windows-script-host среды могут быть вложенными: они могут vbs ссылаться на другие переменные windows-script-host среды.
В приведенном выше windows-script-host примере возвращаемое значение cscript - %SystemRoot%\TEMP, которое содержит нерасширенную ссылку cscript на %SystemRoot%.
Чтобы развернуть результат, передайте env его в .ExpandEnvironmentStrings(), как показано выше.

vbscript

environment-variables

wsh

2022-07-31T10:32:45+00:00
Вопросы с похожей тематикой, как у вопроса:

Могу ли я подобрать переменные окружения в сценарии vbscript WSH?