0

Команда, я написал в программе, которая устанавливает некоторое программное обеспечение, и после этого отображает код выхода ниже.Тест ExitCode в Powershell

$SoftwareInstall.ExitCode 

Он возвращает 0 и другое значение зависит от того, как идет установка. После этого у меня есть другое выражение для выполнения, только если exite-код имеет успех, равный 0. Как настроить проверку для этого, используя условие if. Не могли бы вы предложить, если ниже правильный путь?

if ($SoftwareInstall.ExitCode -eq 0){ 
    "Software Installed successfully " 
    #Then some other code I'll put here 

    } 
else{ 
    "Software did not installed" 
} 

Пожалуйста, предложите.

+1

Да, это был бы правильный путь –

+0

Спасибо! сделаю это. – RishuA

ответ

1

Ваш метод является одним из способов сделать это, но я предлагаю вам использовать инструкцию Switch для обработки возвращаемых значений. Если вы установили с помощью файла MSI, то есть несколько кодов возврата вы можете легко обрабатывать таким образом -

#Check MSIEXEC return value    
    switch ($SoftwareInstall.ExitCode){ 
     #If the uninstallation succeeded 
     0 { } 
     #If the Installation succeeded but requires a reboot 
     3010 { } 
     #If the uninstallation failed 
     default { } 
    } 

Обработка кодов возврата в этом случае может сделать код более простым для чтения и изменений в будущем. Он также позволяет обрабатывать несколько разных кодов ошибок без слишком большого количества вложенных блоков ifs или if-else.

+0

код устанавливает только последнюю версию msi, и если он будет успешным, он запустит службы. Вот почему я не думал о коммутаторе, так как мне нужно начинать свои услуги после установки. Каждый раз, когда я проверял и получил 0 в качестве кода возврата для успеха, пожалуйста, предложите – RishuA

+0

Если вы уверены, что вам понадобятся только два блока кода то ваш 'if ($ SoftwareInstall.ExitCode -eq 0)' определенно достаточен. Однако, если вам когда-нибудь понадобится больше, я бы определенно рекомендовал оператор switch. Например, у меня есть код Powershell, который автоматизирует установку и удаление около 10 пакетов. Если какие-либо операции преуспевают, но требуют перезагрузки, то оператор switch может автоматизировать это, прежде чем перейти к следующему пакету. Тем не менее, это может быть излишним для ваших нужд. –

+0

Спасибо, на данный момент только 1 мс, мне нужно работать. – RishuA