명령줄 경로에 공백이 있는 PowerShell 스크립트를 실행하려면 어떻게 해야 합니까?
그래서 명령줄에서 PowerShell 스크립트를 실행하는 여러 가지 방법을 시도했지만 모두 오류를 반환했습니다.
여기 경로가 있습니다.
C:\Users\test\Documents\test\line space\PS Script\test.ps1
나는 이것들을 시도해 봤습니다.
powershell -File '"C:\Users\test\Documents\test\line space\PS Script\test.ps1"'
powershell "& ""C:\Users\test\Documents\test\line space\PS Script\test.ps1"""
Powershell "& 'C:\Users\test\Documents\test\line space\PS Script\test.ps1'"
Powershell -File 'C:\Users\test\Documents\test\line space\PS Script\test.ps1'"
이런 오류가 발생합니다.
& : 용어 'C:\Users\test\Documents\test\line space\PS Script'는 cmdlet, 함수, 스크립트 파일 또는 작동 가능한 프로그램의 이름으로 인식되지 않습니다.이름의 철자를 확인하거나 경로가 포함된 경우 경로가 올바른지 확인하고 다시 시도합니다.
처리 중 - 파일 ''C:\Users\test\Documents\test\line space\PS 스크립트" 실패:지정된 경로의 형식이 지원되지 않습니다.-File 매개 변수의 올바른 경로를 지정합니다.
이거 어떻게 고쳐요?
그-File매개변수
실행하려면powershell.exe -File명령줄에서 항상 공백이 있는 경로를 큰따옴표로 설정해야 합니다("). 작은따옴표()')은 PowerShell에서만 인식할 수 있습니다.그러나 powershell.exe가 명령줄에 의해 호출되고(따라서 파일 매개 변수가 처리됨), 다음을 사용해야 합니다.".
powershell.exe -File "C:\Users\test\Documents\Test Space\test.ps1" -ExecutionPolicy Bypass
그-Command매개변수
사용하시면.-Command매개 변수, 대신-File,그-Command컨텐츠는 PowerShell에서 처리됩니다.따라서 이 경우 사용할 수 있습니다.'안에서.".
powershell.exe -Command "& 'C:\Users\test\Documents\Test Space\test.ps1'" -ExecutionPolicy Bypass
큰따옴표는 명령줄에서 처리되며,& 'C:\Users\test\Documents\Test Space\test.ps1'는 PowerShell에서 실제로 처리되는 명령어입니다.
해결책 1은 분명히 더 간단합니다.
참고:-Command는 또한 아무 것도 지정하지 않을 경우 사용되는 기본 매개 변수입니다.
powershell.exe "& 'C:\Users\test\Documents\Test Space\test.ps1'" -ExecutionPolicy Bypass
이것도 효과가 있을 겁니다.
그-EncodedCommand매개변수
명령을 Base64로 인코딩할 수 있습니다.이렇게 하면 많은 "인용" 문제가 해결되며, 때로는 (그러나 사용자의 경우에는 그렇지 않습니다) 가능한 유일한 방법입니다.
먼저 인코딩된 명령어를 만들어야 합니다.
$Command = "& 'C:\Users\test\Documents\Test Space\test.ps1'"
[Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($Command))
그리고 당신은 그 다음에 사용할 수 있습니다.-EncodedCommand이와 같은 매개변수
powershell.exe -EncodedCommand JgAgACcAQwA6AFwAVQBzAGUAcgBzAFwAdABlAHMAdABcAEQAbwBjAHUAbQBlAG4AdABzAFwAVABlAHMAdAAgAFMAcABhAGMAZQBcAHQAZQBzAHQALgBwAHMAMQAnAA== -ExecutionPolicy Bypass
시도해 보기:
& "C:\Users\test\Documents\test\line space\PS Script\test"
예제에서 인용과 중복 인용을 이유 없이 혼용하고 있습니다.
IF EXIST "C:\Users\test\Documents\test\line space\PS Script\test.ps1" (
powershell -ExecutionPolicy Unrestricted -File "C:\Users\test\Documents\test\line space\PS Script\test.ps1"
)
파라미터를 사용하는 경우 다음과 같이 수행할 수 있습니다.
powershell.exe -command "& {&'C:\A B C\foo.ps1' param1 param2}"
공백이 있는 파라미터를 전달해야 했습니다.
배치 파일로 파일을 드래그 앤 드롭하고 있는데, 경로 및/또는 파일 이름에 공백이 있는 서버에서 파일이 꺼져 있습니다.위의 답변들을 테스트한 결과, 저는 이것이 작동하게 되었습니다.참고로 PowerShell 실행 파일을 시작하기 전에 작업 디렉토리로 변경합니다.
배치 파일:
pushd O:\Data\QuickList
start powershell -noexit -Command ".\QuickList.ps1 -datafile '%1'"
popd
언급URL : https://stackoverflow.com/questions/45760457/how-can-i-run-a-powershell-script-with-white-spaces-in-the-path-from-the-command
'programing' 카테고리의 다른 글
| 제거한다.제거한다.wp_nav_메뉴 출력에서 포장지 (0) | 2023.11.04 |
|---|---|
| HTML5 오디오 재생 여부 확인? (0) | 2023.11.04 |
| 자바스크립트에서 Typed Arrays의 장점은 C에서 작동하는 것과 같거나 비슷하다는 것입니까? (0) | 2023.11.04 |
| JQuery를 사용하여 특정 자식 요소가 없는 요소를 선택하는 방법 (0) | 2023.11.04 |
| PHP를 사용하여 압축과 함께 PNG를 JPG로 변환하시겠습니까? (0) | 2023.11.04 |