-명령어의 종료 코드가 스크립트의 종료 코드와 같지 않습니다.
PowerShell - Command "& scriptname"으로 스크립트를 실행해야 하는데, PowerShell에서 받은 종료 코드가 스크립트 자체가 반환한 종료 코드와 같다면 정말 좋겠습니다.안타깝게도 아래와 같이 스크립트가 0을 반환하면 PowerShell이 0을 반환하고 0이 아닌 값을 반환하면 1을 반환합니다.
PS C:\test> cat foo.ps1
exit 42
PS C:\test> ./foo.ps1
PS C:\test> echo $lastexitcode
42
PS C:\test> powershell -Command "exit 42"
PS C:\test> echo $lastexitcode
42
PS C:\test> powershell -Command "& ./foo.ps1"
PS C:\test> echo $lastexitcode
1
PS C:\test>
[환경] 사용하기::출구(42)는 거의 작동합니다.
PS C:\test> cat .\baz.ps1
[Environment]::Exit(42)
PS C:\test> powershell -Command "& ./baz.ps1"
PS C:\test> echo $lastexitcode
42
PS C:\test>
스크립트가 상호작용적으로 실행될 때 전체 셸을 빠져나간다는 점을 제외하고는 말입니다.좋은 의견이라도 있나?
보내주시는 부분을 보시면.-Command
대본대로라면 절대로 작동하지 않을 겁니다실행 중인 스크립트.foo.ps1
스크립트에는 종료할 호출이 없으므로 종료 코드를 반환하지 않습니다.
종료 코드를 반환하면 원하는 대로 처리됩니다.또한 에서 변경합니다."
로.'
,그렇지않으면$lastexitcode
문자열을 PowerShell에서 실행하면 두 번째 PowerShell에 문자열을 '전송'하기 전에 해결됩니다.
PS C:\test> powershell -Command './foo.ps1; exit $LASTEXITCODE'
PS C:\test> echo $lastexitcode
42
PS: 또한 확인해 보십시오.-File
스크립트를 실행하려는 경우 parameter.하지만 그렇지 않다는 것도 알고 있습니다.return 1
다음과 같이 종료 오류가 있는 경우-Command
그렇습니다. 마지막 주제에 대해서는 여기를 참고하세요.
PS C:\test> powershell -File './foo.ps1'
PS C:\test> echo $lastexitcode
42
주의 사항: PowerShell 스크립트가 65535보다 높은 종료 코드를 반환할 경우 롤오버:
$exitCode = 65536
Exit $exitCode
다음 CMD가 위의 PS1 스크립트를 호출하면 %error level%인 0이 됩니다.
Powershell.exe "& 'MyPowershellScript.ps1' "; exit $LASTEXITCODE
SET ERR=%ERRORLEVEL%
종료 코드가 65537이면 %error level% 1 등이 됩니다.
한편 CMD가 다른 CMD를 호출할 때 하위 스크립트가 65535보다 높은 오류 수준을 반환하면 정상적으로 통과됩니다.
Cmd /c exit 86666
CMD는 예상대로 %error level%인 86666을 반환합니다.
이 모든 것에 주의해야 합니다.지금 이런 일이 뚜렷한 이유 없이 오락가락하고 있습니다.
어떻게 대본을 대화식으로 부르십니까?
이것을 시도해 보았는데 잘 되는 것 같으나, 파워쉘이 아닌 DOS 프롬프트에서 호출합니다.
C:\Temp>type foo.ps1
exit 42
C:\Temp>powershell -noprofile -nologo -noninteractive -executionpolicy Bypass -file .\foo.ps1
C:\Temp>echo %errorlevel%
42
c:\Temp>
언급URL : https://stackoverflow.com/questions/18410956/commands-exit-code-is-not-the-same-as-a-scripts-exit-code
'source' 카테고리의 다른 글
레일 4는 ajax, jquery, :remote => true로 부분을 렌더링하고 _에 응답합니다. (0) | 2023.09.14 |
---|---|
CSS를 이용하여 입력 버튼 이미지를 변경하는 방법 (0) | 2023.09.14 |
ASP로 위조 방지 토큰을 활성화합니다.NET Core 및 JQuery (0) | 2023.09.14 |
mysql에서 varchar(100) 선언과 함께 실제 저장소를 얼마나 사용합니까? (0) | 2023.09.14 |
Wordpress WPBakery 비활성화 pretty사진 및 사용 반응형 라이트박스 & 갤러리 (0) | 2023.09.14 |