Uninstalling Old Versions of FortiClient Using PowerShell

 

Uninstalling Old Versions of FortiClient Using PowerShell


We recently had a requirement to uninstall any old versions of FortiClient from machines to install latest through SCCM, but the install required removing old versions. After testing several methods, we found a PowerShell script that worked perfectly without requiring a system restart. Here's how you can automate the uninstallation of old FortiClient versions.

# Stop FortiClient services

Write-Host "Stopping FortiClient services..."

Get-Service -Name "Forti*" -ErrorAction SilentlyContinue | ForEach-Object {

    if ($_.Status -eq 'Running') {

        Write-Host "Stopping service: $($_.Name)"

        Stop-Service -Name $_.Name -Force

    }

}

 

# Kill FortiClient processes

Write-Host "Terminating FortiClient processes..."

Get-Process -Name "Forti*" -ErrorAction SilentlyContinue | ForEach-Object {

    Write-Host "Killing process: $($_.Name)"

    Stop-Process -Id $_.Id -Force

}

 

# Search for FortiClient installation(s) in the registry

Write-Host "Searching for FortiClient installation(s)..."

$fortiClients = Get-WmiObject -Query "SELECT * FROM Win32_Product WHERE Name LIKE 'FortiClient%'"

 

if ($fortiClients) {

    foreach ($fortiClient in $fortiClients) {

        $productCode = $fortiClient.IdentifyingNumber

        Write-Host "Uninstalling $($fortiClient.Name) with ProductCode: $productCode"

 

        # Uninstall using msiexec

        $uninstallResult = Start-Process -FilePath "msiexec.exe" -ArgumentList "/x $productCode /qn /norestart" -Wait -NoNewWindow -PassThru

 

        # Check the uninstallation result

        switch ($uninstallResult.ExitCode) {

            0 {

                Write-Host "$($fortiClient.Name) uninstalled successfully."

            }

            3010 {

                Write-Host "$($fortiClient.Name) uninstalled successfully, but a restart is required."

            }

            1603 {

                Write-Host "$($fortiClient.Name) uninstallation failed with ExitCode: 1603. Please ensure no related processes are running and try again."

                Write-Host "Consider using the FortiClient cleanup tool as a last resort."

            }

            default {

                Write-Host "$($fortiClient.Name) uninstallation failed with ExitCode: $($uninstallResult.ExitCode)."

            }

        }

    }

} else {

    Write-Host "No FortiClient installations found."

}

 



Popular Posts

Windows 11 24H2 Upgrade using Intune Feature Updates Policy

Deploying a Script through Intune to a Linux PC

Deleting Registry.pol and Forcing Group Policy Update Using a Batch File - Deploy through SCCM

Remove CCMCache, Windows.old, and Temp folders using Powershell script