我发现
$(Invoke-Expression hostname) -eq 'mycomputername'
无论是否匹配,退出代码都必须为0。这种行为与Linux不同,即如果不匹配,则错误代码退出1。
在PowerShell中是否有可以返回错误退出码的简短命令,如果不匹配字符串?
我发现
$(Invoke-Expression hostname) -eq 'mycomputername'
无论是否匹配,退出代码都必须为0。这种行为与Linux不同,即如果不匹配,则错误代码退出1。
在PowerShell中是否有可以返回错误退出码的简短命令,如果不匹配字符串?
在脚本中,您可以使用exit
关键字更改退出代码。
正常终止将将退出码设置为0。
未捕获的THROW
会将退出码设置为1。
EXIT
语句将停止进程并将退出码设置为指定的值。
在您的情况下,我会这样做。
if ( $(hostname) -eq 'mycomputername')
{
exit 0
}
else
{
exit 1
}
小更新,现在你可以简化这个:
powershell -command "if($(Invoke-Expression hostname) -ne 'wrongname'){ exit 1 }"
echo Error=%ERRORLEVEL%
C:\>powershell -command "& { if($(Invoke-Expression hostname) -eq 'wrongname'){ exit 0 } else { exit 1 } } "
C:\>echo %errorlevel%
1
C:\>powershell -command "& { if($(Invoke-Expression hostname) -eq 'rightname'){ exit 0 } else { exit 1 } } "
C:\>echo %errorlevel%
0
如果你想更简洁地表达,
powershell -command "& { if($(Invoke-Expression hostname) -ne 'wrongname'){ exit 1 } }"
THROW
没有为我设置退出代码为1。 - JamesQMurphy