powershell - 如何在 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
}
解决方案
您可以在脚本中编写逻辑,
以便任何退出点都将设置%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
, ...
推荐阅读
- flutter - widget.routeName 必须是一个以正斜杠 (/) 开头的字符串
- javascript - JavaScript - 为什么我的 API 调用变量返回未定义?
- asp.net-core - 脚本评分功能不得产生负分/查询失败/阶段查询弹性搜索的所有分片失败
- java - 线程“main”java.lang.Error 中的异常:未解决的编译问题:在scanner.scan.main(scan.java:8)
- r - 使用 bsts 包中的函数 bsts() 使用 MCMC 进行贝叶斯时间序列分析
- c# - C# 到 Typescript(或 javascript)的互操作性是否可能?
- flutter - 颤振重建对话框元素与提供者
- ios - 在没有 NavigationView 的 SwiftUI 中创建 NavigationLink
- spring - 通过电子邮件使用 Spring Boot 发送密码时出现问题
- ios - MSAL B2C PasswordReset 流导致“无效授权”错误