2009-09-08 2 views
9

외부 exe를 실행하는 스크립트가 있습니다. 해당 exe 실패 할 때 (errorlevel을 1로 설정), powershell 스크립트가 실패합니다. + CategoryInfo : NotSpecified : (% 합계 % ... 시간 현재 : 문자열) [], RemoteException을 + FullyQualifiedErrorId : 나는 curl.exe을 실행하고이지고있어Windows PowerShell에서 errorlevel! = 0 무시.

NativeCommandError

어떻게/캐치를 무시할 수 있습니다 외부 exe 인의 실패와 내 스크립트를 계속?

+0

PowerShell에서 오류를 일으키는 오류 코드를 반환하는 외부 EXE입니까? 일반적으로 PowerShell에서 오류가 발생하지는 않습니다. 사실, 오류를 나타내는 $ LASTEXITCODE를 PowerShell 오류로 변환하려면 먼저 작업을 수행해야합니다. –

+0

코드를 게시 할 수 있습니까? 이 경우 실패는 기본 동작이 아닙니다. – Joey

+0

나는 curl.exe을 실행하고이납니다 : + CategoryInfo : NotSpecified : (% 합계 % ... 시간 현재 : 문자열) [], + FullyQualifiedErrorId는 RemoteException : NativeCommandError – ripper234

답변

17

EXE가 반환 한 종료 코드와 관련이 없습니다. EXE가 stderr에 쓰지만 ISE 내에서만 또는 백그라운드 작업을 원격 처리하거나 사용할 때 오류가 생성됩니다. stderr에 쓰는 exe가 이 아닌 경우은 일반 PowerShell 명령 프롬프트에서 오류를 생성합니다. 이것이 왜 그런지는 모르겠지만이 게시물에 대한 정보를 좀 더 얻을 수 있다면이 게시물을 업데이트 할 것입니다.

+0

셸에서 stderr가 콘솔로 바로 이동하는 것 같습니다. stdout (2> & 1)로 경로를 재 지정하면 ErrorRecords에 메시지가 래핑됩니다.어쩌면 PowerShell 팀은 ISE가 모든 오류가 더 눈에 띄기 쉬운 환경이라고 결정했을 것입니다. – JasonMArcher

+0

내 대답 아래에 더 자세하게 http://stackoverflow.com/a/11826589/284795 –

+0

좌절의 많은 시간을 해결, 감사합니다 –

1

필자는 powershell_ise (IDE)를 통해 스크립트를 실행하고 있었는데, 이것이 문제의 원인이라고 생각합니다. Powershell 자체를 통해 실행하면 효과가있는 것 같습니다.

11

사실, 응용 프로그램이 잘 돌아갔습니다. Powershell은 오류를보고하는 데 실수로 착각합니다.

응용 프로그램이 표준 오류로 인쇄하면 Powershell에서 응용 프로그램이 실패했다고 때때로 판단합니다. 이것은 실제로 Powershell 개발자가 만든 디자인 결정입니다. 많은 사람들이 신뢰할 수있는 응용 프로그램 (예 : 말림)이 정상적인 작동 과정에서 유용한 정보를 표준 오류로 인쇄하기 때문에 Imho는 실수입니다. 결과적으로 Powershell은 다른 Powershell 스크립트에서만 잘 작동하며 다른 응용 프로그램과 상호 운용하기 위해 의존 할 수 없습니다. 이 스레드에서


다른 독자 어려움 PowerShell에서 일관성을 구현하므로 동작을 재현했다. NativeCommandError가 발생하는지 여부는 표준 오류가 리디렉션되는 방식에 따라 다릅니다 (결과적으로 바닐라 Powershell ISE에서는 버그가 발생하지만 바닐라 Powershell에서는 발생하지 않음). 첫 번째 단락의 디자인 결정에 대한 의견이 어떻든간에 일관성없는 구현은 Powershell 버그에 대한 것입니다. $LastExitCode=0 but $?=False in PowerShell. Redirecting stderr to stdout gives NativeCommandError

+0

이것은 중요한 정보입니다. 몇 달 동안 - 그리고 나서 지속적으로 실패한 스크립트로이 문제를 해결했습니다. 그것에 대해 readme 파일에 메모를 적어 두겠습니다. 자세한 설명 주셔서 감사합니다. –

관련 문제