2017-02-16 126 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 { 
    ... 
}