명령줄 명령을 동적으로 생성한 다음 powershell을 사용하여 호출
파워셸을 사용하여 '&' 문자를 사용하여 다른 응용 프로그램을 실행하고 매개 변수를 전달할 수 있습니다.
간단한 예입니다.
$notepad = 'notepad'
$fileName = 'HelloWorld.txt'
# This will open HelloWorld.txt
& $notepad $fileName
좋아요.하지만 비즈니스 로직을 사용하여 명령 문자열을 동적으로 생성하려면 어떻게 해야 합니까?동일한 간단한 예 사용:
$commandString = @('notepad', 'HelloWorld.txt') -join ' ';
& $commandString
오류가 발생했습니다.
'notepad HelloWorld.txt'라는 용어는 cmdlet, 함수, 스크립트 파일 또는 작동 가능한 프로그램의 이름으로 인식되지 않습니다.이름의 철자를 확인하거나 경로가 포함된 경우 경로가 올바른지 확인한 후 다시 시도하십시오.
실제 예제에서는 마지막 명령줄 문자열에 옵션을 동적으로 추가하거나 제거하려고 합니다.제가 이것에 대해 할 수 있는 방법이 있나요?
이를 위한 두 가지 방법:
인수에서 exe 분리
인수에 대한 모든 동적 작업을 수행하지만 변수가 이후에 인수를 보유한 상태에서 exe를 정상적으로 호출합니다.
$exe = 'notepad' $argument = '"D:\spaced path\HelloWorld.txt"' &$exe $argument #or notepad $argument
두 개 이상의 인수가 있는 경우 호출의 실행 부분과 분리될 경우 인수를 배열로 만들어야 합니다.
$exe = 'notepad' $arguments = '"D:\spaced path\HelloWorld.txt"','--switch1','--switch2' &$exe $arguments
호출-식 사용
모든 항목이 문자열에 포함되어야 하는 경우 문자열을 정규식인 것처럼 호출할 수 있습니다.
Invoke-Expression
의 별칭도 있습니다.iex
.$exp = 'notepad "D:\spaced path\HelloWorld.txt"' Invoke-Expression $exp
두 경우 모두 인수와 exe의 내용을 따옴표로 묶고 명령줄에 바로 쓰는 것처럼 적절하게 형식을 지정해야 합니다.
문자열을 구성하는 논리를 유지하려면 다음을 수행합니다.
$commandString = @('notepad', 'HelloWorld.txt') -join ' '
&([scriptblock]::create($commandstring))
언급URL : https://stackoverflow.com/questions/6604089/dynamically-generate-command-line-command-then-invoke-using-powershell
'programing' 카테고리의 다른 글
물음표 '?'의 빠른 의미는 무엇입니까? (0) | 2023.09.01 |
---|---|
다국어 웹사이트를 만드는 방법 (0) | 2023.09.01 |
MariaDB 시작 오류 (0) | 2023.09.01 |
Larvel 롤백 관련 데이터베이스 (0) | 2023.09.01 |
PowerBi에서 대용량 DB(sqlite/mariadb)로 작업 (0) | 2023.09.01 |