Я настраиваю PATH на нескольких серверах W2k3 в PowerShell, чтобы преобразовать определенные пути с пробелами в их 8,3 эквивалента. После нескольких преобразований регулярных выражений я запускаю следующие две команды:
# Set the path for this process
$env:PATH = $path
# Set the path for the Machine
[System.Environment]::SetEnvironmentVariable('PATH', $path,[System.EnvironmentVariableTarget]::Machine)
После их запуска путь меняется так, как я не собирался. % SystemRoot% равномерно расширяется до C: \ Windows. Я не вижу, где это сигнализирует об апокалипсисе, но я бы предпочел оставить% SystemRoot%, поэтому я возился до тех пор, пока не получил% SystemRoot% для повторного появления в пути, но когда я это сделал, путь больше не расширяется и больше не работает. Повторение пути в CLI возвращает нерасширенную строку (это неправильно), и команды в SystemRoot больше не могут быть найдены.
Если я затем добавлю нулевую запись в Путь ";;", не изменяя никакого другого текста в ПУТИ, она начнет работать правильно.
Итак, мой вопрос заключается в том, как программно изменить путь, используя PowerShell, чтобы не мешать расширению переменных внутри пути?