Powershell返回退出代码的速度过快

时间:2019-03-27 00:09:00

标签: powershell

我有一个脚本可以卸载McAfee Antivirus及其相关的代理。

我遇到的问题是,脚本提供的退出代码为时过早,无法继续执行。如果我多次运行该脚本,则会获得理想的结果,但是当我们尝试通过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 :(得分:0)

启动过程在启动过程后立即报告一个返回代码,指示该过程是否成功。使用-wait强制脚本等待直到完成,或者捕获输出并根据返回值进行操作。请参阅Start-Process

的文档