powershell - PowerShell 脚本始终通过,不抛出错误 - “ErrorAction Stop”不捕获异常
问题描述
我有我的静默安装 PowerShell 脚本,但我有一个问题,即使某些参数不正确,我的 powershell 脚本的执行也不会失败。
$expression="C:\app\tool.exe /COMPUTER=server1 /INSTALL /SILENT"
try {
Invoke-Expression $expression -ErrorAction Stop
}
catch {
Write-Host "Entered Exception"
}
不幸的是,它总是“绿色”,就像执行成功并且没有抛出错误一样。
但是,在日志中,我可以看到这是设置的“意外取消”。
******************************************************** Error:
Connect to computer registry failed
Computer 'SERVER1' does not exist
The network path was not found.
Unattended setup >>> 'Cancel'
********************************************************
Exit code = 0x4C7
我的脚本没有输入catch
子句。是否有可能我可以以某种方式强制它失败,所以我可以捕捉到那个错误。我有一个大问题,我的 powershell 没有失败,尽管它应该是因为它有错误的安装参数。
谢谢!!!
解决方案
Invoke-Expression
仅检查运行命令的可能性,并在可以调用命令时成功。用于$LASTEXITCODE
检查输出:
$expression="C:\app\tool.exe /COMPUTER=server1 /INSTALL"
try {
$result = Invoke-Expression $expression
if ($LASTEXITCODE -ne 0) {
throw $result
}
}
catch {
Write-Host "Entered Exception"
$_
}
推荐阅读
- reactjs - 是否聚合了多个 this.setState 调用的状态更改?
- javascript - 仅在 wordpress 简码页面上调用 js 方法
- android - 如何检索用户通过颤振谷歌放置自动完成屏幕选择的位置,以便创建路线?
- java - java.lang.IllegalStateException: enterPictureInPictureMode: 当前活动不支持画中画
- r - 有没有 uniPlot 函数的类似物?
- scala - gradle 使用 kotlin DSL 在 jar 工件名称中包含 scala 版本
- javascript - 如何防止使用php表单提交双击?
- java - 在 Android 中提示用户输入电子邮件
- c# - 切换页面而不是窗口
- python - 在查询字符串评估 Python/Django 中使用 Q() 链接重构多个 if 条件