1
мне нужно изменить C: \ Program Files (x86) в C: \ Progra ~ 2 в системной переменной пути. Я думал сделать это с Powershell, поэтому я придумал следующий сценарий.Заменить строку в системном пути с Powershell
$NewPath = (Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH).Path
$OldValue = ${Program Files (x86)}
$NewValue = "Progra~2"
$NewPath = $NewPath -replace $OldValue, $NewValue
Set-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH –Value $newPath
$NewPath
Выход, к сожалению, не соответствует ожидаемым.
Progra~2oProgra~2mProgra~2eProgra~21Progra~2\Progra~2oProgra~2pProgra~2mProgra~2nProgra~2\Progra~2bProgra~2iProgra~2nProgra~2;Progra~2CProgra~2:
Progra~2\Progra~2OProgra~2rProgra~2aProgra~2cProgra~2lProgra~2eProgra~2\Progra~2MProgra~2iProgra~2dProgra~2dProgra~2lProgra~2eProgra~2wProgra~2a
Может ли кто-нибудь помочь мне с этим?
'$ OldValue = $ {Pogram Files (x86)}' -> '$ OldValue = "Program Files (x86)" '? – sodawillow
Я изначально использовал это значение, но это не сработало из-за(). Мне пришлось использовать $ {}, потому что() был интерпретирован как часть команды. – Ricardo
Ах да, '-replace' использует регулярные выражения, вам нужно избежать появления парсеров:' $ OldValue = "Program Files \ (x86 \)" '. – sodawillow