Подтвердить что ты не робот

Обновить $env: путь в Powershell?

У меня есть PowerShell script, который проверяет, что определенный каталог находится в PATH (просматривая $env: путь). Похоже, что $env: путь загружается и локально локализуется каждым приложением при запуске, и эта область передается всем дочерним приложениям. Итак... если кто-то открывает Firefox, загружает мою программу, запускает ее, получает сообщение о том, что они должны изменить свой путь, исправляет проблему, а затем снова запускает программу из окна загрузки Firefox, они получат одно и то же сообщение, если только они запускают мою программу из Проводника или перезапускают Firefox.

Есть ли способ перезагрузить $env: путь в моем PowerShell script, чтобы он получил текущее значение, как если бы оно было открыто из Explorer?

4b9b3361

Ответ 1

Если вы работаете вне контекста браузера, я бы сказал вам использовать

[System.Environment]::SetEnvironmentVariable(string name, string value, EnvironmentVariableTarget target) 

чтобы изменить переменную Path для пользователя. Этот третий параметр позволяет указать Process, User или Machine. Если вы укажете User или Machine, изменение будет постоянным и появится в блоках env всех программ, которые начинаются после этого. Однако, поскольку вы работаете в браузере, я не думаю, что вы сможете это сделать.

Если пользователь изменит свой путь, это изменение будет доступно для будущих экземпляров браузера. Другой вариант - проверить (Get-Command) приложение, которое вам нужно в пути, и если вы не можете его найти, измените $env:Path самостоятельно в script каждый раз, когда он запускается. То есть, если вы не знаете, каким должен быть путь.