Чтобы добавить к ответу Джастина, "Машина" не может быть целью, которую вы ищете здесь, несмотря на то, что фрагмент кода работает.
Прежде всего, если PATHEXT не содержит ".BAT "или" .CMD "больше, проблема в другом месте.
Если это правильное поведение в вашей среде, тогда читайте дальше.
$pathext = [Environment]::GetEnvironmentVariable("PATHEXT", "Process")
[Environment]::SetEnvironmentVariable("PATHEXT", $pathext+';.BAT', "Process")
- " Машина ""target помещает переменную в реестр" HKEY_LOCAL_MACHINE ", готовый для следующих процессов для чтения
- Цель" User "помещает переменную в реестр" HKEY_CURRENT_USER ", готов чтобы следующие процессы читали
- Цель "Процесс" прямо сейчас переводит переменную в работоспособное состояние для запущенного в данный момент процесса PowerShell.exe
Когда я говорю "process ", я действительно имею в виду какой-то другой исполняемый файл, запускаемый другими способами, кроме вашего скрипта.Процессы, запускаемые вашим сценарием (как ваша команда bat / cmd), являются дочерними процессами и наследуют текущую среду, то есть все определенные переменные, если вы не укажете это иначе, как второй поток «start-process».
Насколько я могу прочитать, это то, что вы пытаетесь достичь.переменная PATHEXT с новым добавленным содержимым будет работать только через сценарий / процесс PowerShell и будет доступна для вашего сценария bat / cmd.