PowerShell - 시작 프로세스 및 cmdline 스위치
난 이걸 잘 할 수 있어:
$msbuild = "C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe"
start-process $msbuild -wait
그러나 이 코드(아래)를 실행하면 오류가 발생합니다.
$msbuild = "C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe /v:q /nologo"
start-process $msbuild -wait
시작 프로세스를 사용하여 MSBuild에 매개 변수를 전달할 수 있는 방법이 있습니까?시작 프로세스를 사용하지 않는 것에 대해 개방적입니다. 이 프로세스를 사용한 유일한 이유는 "명령어"가 변수로 필요했기 때문입니다.
내가 가지고 있을 때
C:\WINDOWS\Microsoft.NET\Framework\v3.5\MS빌드.exe/v:q/nologo
파워셸에서는 어떻게 처리되죠?
대신 어떤 종류의 eval() 함수를 사용해야 하나요?
인수를 별도의 매개 변수로 분리해야 합니다.
$msbuild = "C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe"
$arguments = "/v:q /nologo"
start-process $msbuild $arguments
명시적 파라미터를 사용하면 다음과 같습니다.
$msbuild = 'C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe'
start-Process -FilePath $msbuild -ArgumentList '/v:q','/nologo'
편집: 따옴표
경고
cmd에서 PowerShell을 실행하는 경우두 번째 인스턴스는 더 이상 작업이 완료될 때까지 기다리지 않습니다.
cmd> PowerShell
PS> Start-Process cmd.exe -Wait
이제 새로운 cmd 창에서 PowerShell을 다시 실행하여 cmd2> PowerShell의 두 번째 cmd 창을 엽니다.
PS> Start-Process cmd.exe -Wait
PS>
PowerShell의 두 번째 인스턴스는 더 이상 -Wait 요청을 수락하지 않으며 모든 백그라운드 프로세스/작업이 실행 중임에도 불구하고 'Completed' 상태로 반환됩니다.
C# Explorer 프로그램을 사용하여 cmd를 열었을 때 이 사실을 알게 되었습니다.exe 창과 PS는 이 창에서 실행되지만 -Wait 요청도 무시됩니다.cmd.exe의 'win32 job'인 PowerShell은 대기 요청을 처리할 수 없습니다.
Windows 7/x64의 PowerShell 버전 3.0에서 이 문제가 발생했습니다.
cmd를 사용하면 특히 호출된 응용 프로그램에서 출력을 파이핑할 필요가 있는 경우(특히 msbuild와 달리 로깅이 내장되어 있지 않은 경우) 다른 방법으로도 도움이 된다는 것을 알게 되었습니다.
cmd /C "$msbuild $args" >> $outputfile
OP가 PowerShell Community Extensions를 사용하고 있지 않은 한 시작 프로세스 cmdlet을 여러 개 제공합니다.이 경우 Glennular의 솔루션은 pscx\start-process : -path(위치 1) -arguments(양수 2)의 위치 매개변수와 일치하므로 치료 효과가 있습니다.
언급URL : https://stackoverflow.com/questions/651223/powershell-start-process-and-cmdline-switches
'programing' 카테고리의 다른 글
PowerShell에 권장되는 코딩 스타일은 무엇입니까? (0) | 2023.04.08 |
---|---|
PowerShell 콘솔에 쓰는 방법 (0) | 2023.04.08 |
SQL Server 2008에서 문자열에 선행 0을 패딩하여 3자 길이 설정 (0) | 2023.04.08 |
PowerShell 스크립트에 인수를 전달하려면 어떻게 해야 합니까? (0) | 2023.04.08 |
Windows 배치 파일에서 콘솔에 빈(빈) 행을 에코합니다. (0) | 2023.04.08 |