2017-02-16 83 views
0

从PowerShell脚本使用DISM工具时,如何捕获错误?从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],我总是得到ERROR。

但是它的工作原理,如果我用另一个替换cmd命令,例如

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

如果[some_file]存在我获得成功,否则错误。

+0

考虑'DISM'的cmdlet。 https://technet.microsoft.com/itpro/powershell/windows/dism/inde –

+0

DISM cmdlet的链接对我无效。 https://technet.microsoft.com/en-us/library/hh852126.aspx?f=255&MSPPError=-2147217396 – lit

+0

“DISM”cmdlet在Windows 7上不受支持(这是我需要运行脚本的地方)。无论如何,我已经找到了处理错误的方法 – AndroidX

回答

0

看来,通过DISM返回成功的退出代码是3010而不是0

这适用于内DISM PowerShell命令:

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