Powershell слишком быстро возвращает код выхода - PullRequest
0 голосов
/ 27 марта 2019

У меня есть скрипт для удаления антивируса McAfee и агента, связанного с ним.

Проблема, с которой я столкнулся, заключается в том, что скрипт предоставляет код выхода слишком рано и не продолжается до конца. Если я запускаю сценарий несколько раз, я получаю желаемый результат, но, поскольку мы пытаемся передать его через PDQ удаленно, нам нужно, чтобы он выполнялся через сценарий и предоставлял код завершения только в конце сценария.

Я новичок в PowerShell, так что, вероятно, есть гораздо лучший и простой способ написания этого сценария, но любой совет будет с благодарностью.

Start-Process -FilePath "msiexec.exe" -ArgumentList "/x {CE15D1B6-19B6-4D4D-8F43-CF5D2C3356FF} REMOVE=ALL REBOOT=R /q"; Write-Host "Uninstalling McAfee VirusScan Enterprise 8.8..."

$version = (Get-WmiObject -class Win32_OperatingSystem).Caption
Write-Host "Detected OS as $version"

if ($version -like '*Windows 7*')
{
    Write-Host "Uninstalling McAfee Agent..."

    Start-Process -FilePath "C:\Program Files (x86)\McAfee\Common Framework\frminst.exe" -ArgumentList "/forceuninstall"
}

elseif ($version -like '*Windows 10*')
{
    Write-Host "Unmanaging McAfee Agent for Uninstall Process.."

    Start-Process -FilePath "C:\Program Files\McAfee\Agent\maconfig.exe" -ArgumentList "/provision /unmanaged"; 

    Write-Host "Uninstalling McAfee Agent..."

    Start-Process -FilePath "C:\Program Files\McAfee\Agent\x86\frminst.exe" -ArgumentList "/forceuninstall"
}

else
{
    exit
}

1 Ответ

0 голосов
/ 27 марта 2019

Start-Process сообщает код возврата, как только запускает процесс, указывая, был он успешным или нет.Либо используйте -wait, чтобы заставить скрипт ждать, пока он не закончит работу, либо перехватите выходные данные и продолжите работу в зависимости от значения возврата.См. Документы для Start-Process

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...