首页 > 解决方案 > 如何在 PowerShell 中返回自定义错误级别?

问题描述

我想从命令行运行脚本,并获取错误级别。我使用这个批处理脚本。

set log=C:\Users\PowerShell\XML\Log.txt
set PS=C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
set PS=%PS%\powershell.exe 

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" C:\Users\XML.ps1 -i C:\Users\A2.txt -j C:\Users\Fb.xml
   
echo %ERRORLEVEL% > "%log%"

我试过这个脚本来获取自定义错误级别,如果找到,它将返回123,否则456。但它总是给我1

$regex = [regex]$Pattern

$matching = $regex.Match($FBString)
if ($matching.Success) {
    while ($matching.Success) {
        "Match found: {0}" -f $matching.Value
        Exit 123
        $matching = $matching.NextMatch()
    }
}
else {
    "Not Found"
    Exit 456
}

标签: powershellbatch-fileexit-codeerrorlevel

解决方案


您可以在脚本中编写逻辑,
以便任何退出点都将设置%errorlevel%系统变量...

并创建您的“错误返回逻辑”...

像这样的东西:

if ( $LASTEXITCODE -eq 0 ) { exit 0  }
if ( $LASTEXITCODE -eq 1 ) { exit 1  }
if ( $x -gt 1 ) { exit 2  }
if ( $x -lt 1 ) { exit 3  }
...

然后您可以从批处理文件中检查%errorlevel% == 0, 1, 2, ...


推荐阅读