-File 명령 줄 스위치를 사용하여 Powershell 스크립트 (2.0)를 실행할 때 Param에서 입력 매개 변수를 명시 적으로 정의하면 종료 코드는 항상 "0"(실패하지 않음) 정의되거나 예상 된 오류 코드를 올바르게 반환하는 대신
명시 적 매개 변수 정의와 -command 스위치를 사용하는 경우에는 발생하지 않지만 불필요한 경우 스크립트에 -File 스위치를 유지해야합니다.Powershell이 적절한 종료 코드를 반환하지 못함
해결 방법 (명시 적 매개 변수 정의 제거는 필요하지 않음)과 관련된 도움은 매우 유용합니다.
PowerShell은 "올바른 종료 코드를 반환하지"
exit1.ps1 : 명시 적으로 매개 변수를 정의 스크립트를 호출합니다. 비정상적으로 실패하는 스크립트 부분이 있더라도 Errorlevel은 항상 0입니다.
Exit1LooseParam.ps1 :
param(
[Parameter(mandatory=$true)][string]$arg1,
[Parameter(mandatory=$true)][string]$arg2,
[Parameter(mandatory=$true)][string]$arg3
);
exit 1;
는 출력 : 덜 명시하기 위해 PARAM 기능을 수정할 때 이제
C:\temp\testnant>powershell -noprofile -nologo -noninteractive -executionpolicy Bypass -file .\exit1.ps1 "one" "two" "three"
C:\temp\testnant>echo %errorlevel%
0
, 같은 일을 시도 할 수 있습니다
param(
$arg1,
$arg2,
$arg3
);
exit 1;
(세 개의 매개 변수)
출력 :
C:\temp\testnant>powershell -noprofile -nologo -noninteractive -executionpolicy Bypass -file .\Exit1looseParam.ps1 "one" "two" "three"
C:\temp\testnant>echo %errorlevel%
1
당신이 명시 적으로 입력 매개 변수를 정의 할 때, 파워 쉘은 어떤 이유로 "그 빌어 먹을 정신을 잃고"로 보인다 반환하지 나타납니다 적절한 종료 코드.
사람이 해결 방법이 있거나 이런 일이 이유를 설명 할 수 있습니까?
이렇게하면 종료 코드가 올바르게 반환되는 것 같습니다. 감사! – JonnyG
이것에 대한 고마워, 그냥 나를 위해 문제를 해결 :) –
나는이 출구를 얻을 수있는 0 또는 1 – cmcginty