>

PowerShell 응용 프로그램을 개발합니다. 예를 들어 사용합니다

Start-Process "cmd.exe" "/c some_command"
#rest of the source code

그러나 이것을 실행할 때 cmd.exe 를 기다리지 않습니다.  나머지 소스 코드를 실행하기 전에 닫습니다.

cmd.exe 를 어떻게받을 수 있나요  "exit event"로 돌아가서 PowerShell 스크립트를 계속 실행 하시겠습니까?

cmd.exe가 실행되는 동안 PowerShell 스크립트를 잠글 수있는 다른 방법이 있습니까?

  • 답변 # 1

    답은 -wait 를 사용하는 것입니다

    Start-Process "cmd.exe" "/c some_command" -wait
    
    

  • 답변 # 2

    PowerShell에서 직접 CMD를 호출 할 수 있습니다 :

    cmd.exe /c some_command
    
    

    실행 파일이 단순 단어가 아닌 문자열로 제공되는 경우 명령문 앞에 호출 연산자를 붙여야합니다 (그렇지 않으면 연산자를 사용하는 것은 선택 사항 임).

    & 'cmd.exe' /c some_command
    
    

    이러한 종류의 호출은 자동으로 동 기적으로 실행됩니다.

    Start-Process  호출은 기본적으로 비동기입니다. -Wait 매개 변수를 추가하여 동작을 동기로 변경할 수 있습니다. .

  • 답변 # 3

    -Wait 사용 외에도 종료 코드를 확인하여 명령 성공 여부를 확인할 수도 있습니다.

    [int]$ExitCode = (Start-Process "cmd.exe" "/c some_command" -Wait).ExitCode
    # Check exit code
    if ($ExitCode -ne 0) {
        throw "Something went wrong.
    }
    
    

    cmd 디버깅 및 검사에 유용합니다  성공.

  • 이전 java - 5로 업그레이드 한 후 왜 Hibernate DAO가 다르게 작동합니까?
  • 다음 java에서 JSON으로부터 필요한 값을 얻을 수 없습니다 "String 유형에 대해 getString (String) 메소드가 정의되지 않았습니다" "