Я хочу установить переменную, скажем, JAVA_HOME, чтобы динамически принимать значение другой переменной, скажем, JAVA_HOME_x64 … например, всякий раз, когда изменяется JAVA_HOME_x64 и создается новый сеанс терминала, JAVA_HOME присваивается значение любого значения JAVA_HOME_x64.
В PowerShell я делаю следующее …
[System.Environment]::SetEnvironmentVariable('JAVA_HOME', '%JAVA_HOME_x64%', 'Machine');
[System.Environment]::SetEnvironmentVariable('JAVA_HOME_x64', 'c:\myjava', 'Machine');
[System.Environment]::GetEnvironmentVariable('JAVA_HOME', 'Machine') ==> returns %JAVA_HOME_x64%
Когда я открываю новую командную строку и набираю set (или эхо% JAVA_HOME%), она показывает мне значение JAVA_HOME как% JAVA_HOME_x64%, а не c: \ myjava.
Однако, если я перейду в пользовательский интерфейс (как показано ниже) и вручную отредактирую (удалите и воссоздаю) JAVA_HOME и сброшу его значение на% JAVA_HOME_x64%, а затем при запуске новой командной строки / сеанса терминала теперь отображается значение JAVA_HOME как c: \ myjava..Почему? Любые идеи? Как добиться того же поведения, что и в пользовательском интерфейсе, с помощью команд PowerShell.
После некоторого расследования я понял, что ключ реестра (в Computer \ HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment), созданный с помощью указанной выше командной строки PowerShell для указанной переменной, имеет тип REG_SZ, а тот, который создается через пользовательский интерфейс, — REG_EXPAND_SZ. Это может быть ключ к разгадке
Я попытался взглянуть на эту stackoverflow. com / questions / 50607618 /, но у меня все равно не работает. — person hardeep schedule 03.06.2021
Однако, пожалуйста, обратите внимание, что если я открываю командную строку с помощью Run As Admnistrator, похоже, все работает нормально. — person hardeep schedule 03.06.2021
Думаю, вопрос требует некоторой поправки. JAVA_HOME
не установлен в c:\myjava
в командах. Кроме того, какие команды вы имеете в виду, какие новые? Обновите вопрос и поделитесь дополнительной информацией. — person hardeep schedule 03.06.2021
@alexzelaya, я хочу динамически установить JAVA_HOME на значение JAVA_HOME_x64, т.е. если JAVA_HOME_x64 изменится в будущем, JAVA_HOME обновится автоматически. — person hardeep schedule 03.06.2021
Это нигде не отражено в вашем вопросе. stackoverflow.com/help/how-to-ask — person hardeep schedule 03.06.2021
Кроме того, в Windows нет собственного способа настройки динамической переменной среды. Это должно быть сделано через какой-то другой механизм; GPO, планировщик задач и т. Д. — person hardeep schedule 03.06.2021
это работает, если я установил точно такое же значение, то есть% JAVA_HOME_x64% через пользовательский интерфейс для переменной JAVA_HOME. — person hardeep schedule 03.06.2021
Пожалуйста, уделите необходимое время, чтобы рассмотреть свой вопрос. Непонятно, о чем вы спрашиваете. — person hardeep schedule 03.06.2021
Результирующая запись реестра должна иметь тип REG_EXPAND_SZ. — person hardeep schedule 03.06.2021
Следующее сработало ..