Как мне обновить путь Windows БЕЗ потери исходных переменных встроенной среды - PullRequest
2 голосов
/ 01 июня 2011

Windows 2008R2 Powershell v2.0

Исходный путь (как видно из расширенных системных настроек / переменных среды):

% SystemRoot% \ system32;% SystemRoot%;% SystemRoot% \ System32 \ Wbem;% SystemRoot% \ System32 \ WindowsPowerShell \ v1.0 \

Из Powershell я запускаю:

[Environment]::SetEnvironmentVariable("PATH", "$($env:path;C:\Temp", "Machine")

или

[Environment]::SetEnvironmentVariable("PATH", "$($([Environment]::GetEnvironmentVariable('PATH', 'MACHINE')));C:\Temp", "Machine")

Теперь мой путь (как видно из расширенных системных настроек / переменных среды):

C: \ Windows \ system32; C: \ Windows, C: \ Windows \ System32 \ Wbem; C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \; C: \ Temp

Есть ли способ получить существующий путь БЕЗ его оценки, чтобы я мог сохранить существующие переменные среды, встроенные в исходный путь?

Ответы [ 4 ]

3 голосов
/ 01 июня 2011

Вид средневековья, но, кажется, работает:

(((reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment") |
  select-string "\s+path\s+REG_EXPAND_SZ").line -split "    ")[3]
1 голос
/ 01 июня 2011

I думаю проблема в том, как PS получает переменную окружения;

Этот пост S / O может содержать ответ для вас (надеюсь!):

PowerShell: получение необработанного значения переменной среды 'tmp *

0 голосов
/ 01 июня 2011

Я не уверен, что есть - я попробовал это:

PS C:\> $string1 = " World"
PS C:\> $string2 = "Hello$string1"
PS C:\> $string2
Hello World

, чтобы увидеть, было ли это связано с переменными окружения или чем-то еще.

Я думаю, это так, как это скомпилированов командной строке.Все переменные оцениваются до того, как вычисляется все выражение.Таким образом, конечные результаты не знают, сколько работы ушло на это.

0 голосов
/ 01 июня 2011

Попробуйте это (после преобразования в PS):

string originalPath = Environment.GetEnvironmentVariable("PATH");
string path = originalPath + ";" + "NEW_PATH_BIT";
Environment.SetEnvironmentVariable("PATH", path);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...