gpt4 book ai didi

Powershell 无法返回正确的退出代码

转载 作者:行者123 更新时间:2023-12-04 00:57:05 25 4
gpt4 key购买 nike

使用 执行 Powershell 脚本(在 2.0 中)时-文件 命令行开关,并在 Param 中明确定义输入参数,退出代码始终为“0”(永不失败),而不是正确返回定义或预期的错误代码。
使用显式参数定义和 时不会发生这种情况。 -命令开关,但是出于无关目的,我需要在我的脚本中保留 -File 开关。

任何有关 的帮助解决方法 (这不涉及删除显式参数定义)将非常有帮助。

Powershell“无法返回正确的退出代码”:

exit1.ps1:明确定义参数的调用脚本。 Errorlevel 始终为 0,即使脚本的某些部分意外失败。

param(
[Parameter(mandatory=$true)][string]$arg1,
[Parameter(mandatory=$true)][string]$arg2,
[Parameter(mandatory=$true)][string]$arg3
);
exit 1;

输出:
C:\temp\testnant>powershell -noprofile -nologo -noninteractive -executionpolicy Bypass -file .\exit1.ps1 "one" "two" "three"

C:\temp\testnant>echo %errorlevel%
0


现在,让我们在将 param 函数修改为不那么明确时尝试同样的事情:

Exit1LooseParam.ps1:
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


似乎当您明确定义输入参数时,Powershell 似乎出于某种原因“失去了理智”并且无法返回正确的退出代码。

有没有人有解决方法或能够解释为什么会发生这种情况?

最佳答案

嗯,这很奇怪,我希望 exit 1在这两种情况下工作。至少你可以同时使用它:
[Environment]::Exit(1)

关于Powershell 无法返回正确的退出代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8902004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com