2017-02-16 10 views
0

Как я могу захватить ошибки при использовании инструмента DISM из сценария PowerShell?Обработать ошибки DISM из сценария PowerShell

& 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] существует я SUCCESS, иначе ошибка.

+0

Рассмотрим 'DISM' командлеты. https://technet.microsoft.com/itpro/powershell/windows/dism/inde –

+0

Ссылка на командлеты DISM не работала для меня. https://technet.microsoft.com/en-us/library/hh852126.aspx?f=255&MSPPError=-2147217396 – lit

+0

Командлеты 'DISM' не поддерживаются в Windows 7 (где мне нужно запустить скрипт). Во всяком случае, я нашел способ справиться с ошибками – AndroidX

ответ

0

кажется, что код выхода на успех возвращенного DISM является 3010 вместо 0.

Это работает DISM команды в PowerShell:

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