PowerShell의 여러 W2k3 서버에서 PATH를 조정하여 공백이있는 특정 경로를 8.3 등가로 변환합니다. 몇 가지 정규식 변환 후 다음 두 명령을 실행합니다.PowerShell에서 설정할 때 Windows PATH 변수 확장을 처리하는 방법은 무엇입니까?
# 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에 다른 텍스트를 변경하지 않고";; "경로에 Null 항목을 추가하면 제대로 작동하기 시작합니다.
그래서 내 질문에 패스 내에서 변수 확장을하지 않으려면 프로그래밍 방식으로 PowerShell을 사용하여 경로를 변경하는 방법입니까?
2 노트 : 1) 각 테스트마다 새로운 CLI를 열고 2) $ env에서 읽은 경로 : PATH가 확장되어 c : \ windows를 읽고 % SystemRoot로 값을 수동으로 변경합니다. 그런 다음 해당 값을 다시 환경으로 푸시합니다. – codepoke
'$ path'에'PATH'를 설정하면 무엇입니까? – manojlds
모든 서버마다 다르지만 ..., % SystemRoot % \ system32, % SystemRoot %, % SystemRoot % \ System32 \ Wbem, % SystemRoot % \ system32 \ WindowsPowerShell \ v1.0; 그들의. $ path를 읽으면 읽기 프로세스 중에 c : \ Windows로 확장됩니다. 설정하기 전에 변수 값으로 확장 된 값을 다시 써야합니다. 변수가있는 $ path 값은 속성 대화 상자를 통해 수동으로 터치하지 않으면 다시 확장되지 않습니다. – codepoke