处理来自 PowerShell 脚本的 DISM 错误

Handle DISM errors from PowerShell script

从 PowerShell 脚本使用 DISM 工具时如何捕获错误?

& cmd /c 'DISM /online /disable-feature /NoRestart /featurename:[feature_name] >NUL 2>&1'

if ($LASTEXITCODE -ne 0) {
    Write-Host "ERROR"
} else {
    Write-Host "SUCCESS"
}

无论[feature_name]是否存在,我总是报错。

但是,如果我将 cmd 命令替换为另一个命令,它会起作用,例如

& cmd /c 'dir [some_file] >NUL 2>&1'

如果 [some_file] 存在,我会成功,否则会出错。

DISM 返回的成功退出代码似乎是 3010 而不是 0。

这适用于 PowerShell 中的 DISM 命令:

if ($LASTEXITCODE -ne 3010) {
    ...
} else {
    ...
}