Powershell 명령을 순차적으로 실행하는 방법

Powershell 명령을 순차적으로 실행하는 방법

접두사가 붙은 경우에만 실행할 수 있는 몇 가지 명령이 있습니다 &.

모두 비동기식으로 실행됩니다.

예시 스크립트:

& 'C:\Program Files\SomeApp\SomeAppUninstall.exe'/silent
& 'C:\Users\bob\Downloads\SomeApp.exe' /silent
& 'C:\Program Files\someApp.exe' /openGui

여기서 일어나는 일은 가장 빠르고 프로그램이 여전히 설치되어 있기 때문에 마지막 명령이 먼저 발생하고, 처음 2개가 동시에 실행되어 충돌이 발생한다는 것입니다.

분명히 순차적으로 실행해야합니다.

어떤 이유로 이 명령은 접두사가 붙은 경우에만 작동 &하거나 오류가 발생하는 경우에만 작동합니다. 스위치가 있기 때문인 것 같습니다.

이 문제를 어떻게 해결하나요?

답변1

몇 년 전, 저는 귀하와 동일하거나 적어도 비슷한 요구 사항을 갖고 있었기 때문에 Powershell 기능을 작성했습니다. 제 기억이 맞다면 이 기능은 저에게 큰 도움이 됐습니다. 설명할 수 없는 딸꾹질을 한 번 겪은 적이 있긴 하지만요. 따라서 사용에 따른 책임은 사용자 본인에게 있습니다.

function wait-for-process {
   param (
     [string] $exe,
     [string] $arguments
   )

  $process                     = new-object System.Diagnostics.Process
  $process.StartInfo           = new-object System.Diagnostics.ProcessStartInfo
  $process.StartInfo.FileName  = $exe
  $process.StartInfo.Arguments = $arguments

  if (-not $process.Start()) {
    "Could not start $exe $arguments!"
     return
  }
  $process.WaitForExit()
  
  if ($process.ExitCode) {
    "Exit code for $exe $arguments is $($process.ExitCode)"
  }

}

답변2

제가 제시한 예는 매우 간단했습니다. 실제 사례는 좀 더 복잡하지만 제 사례는 모두 인수를 1개만 사용합니다.

나는 다음과 같은 간단한 함수를 작성했습니다.

function Await($path, $arg) {
    Start-Process     `
      -Wait           `      
      -FilePath $path `
      -ArgumentList /$arg 
}

관련 정보