Если вы хотите иметь возможность запускать команду без указания ее пути, вам нужно добавить каталог, в котором она находится, в переменную среды PATH.Путь установки в ветви реестра ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ не имеет к этому никакого отношения.
Чтобы добавить каталог в PATH для текущего и всех будущих сеансов, необходимо выполнить что-то вроде этого:
$dir = "${env:ProgramFiles(x86)}\GnuWin32\bin"
# set PATH environment variable for current session
$env:Path += ";${dir}"
# set PATH environment variable for future sessions
$path = [Environment]::GetEnvironmentVariable('PATH', 'Machine')
$path += ";{$dir}"
[Environment]::SetEnvironmentVariable('PATH', $path, 'Machine')
Обратите внимание, однако, что второй шаг (установка переменной для будущих сеансов) работает правильно, только если в $path
не используются переменные среды Windows (%something%
), потому что метод сохраняет значение как REG_SZв реестре.Windows раскрывает переменные среды только в переменной PATH, если она хранится в виде значения REG_EXPAND_SZ.
Если у вас есть обычные переменные среды Windows где-то в $path
, вы должны вручную записать значение в реестр с правильным типом.
$key = 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment'
Set-ItemProperty -Path $key -Name 'Path' -Value $path -Type ExpandString
Приложение:
Все вышеперечисленное применимо, только если вы хотите сделать это программно, конечно.Для ручного подхода вы всегда можете отредактировать переменные среды через графический интерфейс и перезапустить PowerShell.