Как обрабатывать расширение переменной Windows PATH при установке из PowerShell?

Я настраиваю PATH на нескольких серверах W2k3 в PowerShell, чтобы преобразовать определенные пути с пробелами в эквиваленты 8.3. После нескольких преобразований regex я запускаю следующие две команды:

# 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 больше не могут быть найдены.

Если я добавляю в путь нулевую запись ";;;", не изменяя никакого другого текста в PATH, он начинает работать правильно.

Поэтому мой вопрос заключается в том, как программно изменить путь с помощью PowerShell, чтобы не испортить расширение переменных в пути?

6
задан codepoke 23 January 2012 в 16:44
поделиться