1

在 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]存在我得到成功,否则错误。

4

1 回答 1

0

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

这适用于 PowerShell 中的 DISM 命令:

if ($LASTEXITCODE -ne 3010) {
    ...
} else {
    ...
}
于 2017-02-16T21:12:35.507 回答