Como remover o Dell SupportAssist usando o PowerShell

Os ambientes de TI corporativos frequentemente exigem a remoção de bloatware ou utilitários instalados pelo fabricante (OEM) que oferecem pouco valor em ambientes de infraestrutura gerenciada. Um desses aplicativos é o Dell SupportAssist, uma ferramenta que, embora seja útil para sistemas de consumidores, pode apresentar desafios administrativos e de segurança em ambientes corporativos ou de serviços gerenciados. Para profissionais de TI e MSPs que buscam eficiência e controle, o uso do PowerShell nessas tarefas oferece automação, confiabilidade e repetibilidade.

Este artigo explica como remover o Dell SupportAssist usando o PowerShell em computadores com Windows. Seja para manter a higiene dos terminais ou para preparar sistemas para a criação de imagens e reimplantação, este script pode ser um complemento essencial ao seu conjunto de ferramentas.

Contexto

O Dell SupportAssist é um utilitário pré-instalado que verifica de forma proativa o estado do sistema e interage com o sistema de suporte da Dell. Embora seja útil em contextos de consumo, muitas vezes é desnecessário em ambientes gerenciados, nos quais o monitoramento de terminais é realizado por meio de ferramentas profissionais de RMM, como o NinjaOne. Se não forem monitorados, utilitários como o SupportAssist podem executar serviços em segundo plano, consumir recursos e até mesmo causar vulnerabilidades de segurança devido a componentes desatualizados ou serviços desnecessários.

Dada a ausência de um desinstalador padronizado entre as versões, os profissionais de TI precisam de uma solução confiável e automatizada. Este script do PowerShell atende a essa necessidade, detectando o Dell SupportAssist e desinstalando-o por meio de referências ao Registro do sistema e métodos de desinstalação adequados.

O Roteiro

#Requires -Version 5.1

<#
.SYNOPSIS
    Removes Dell Support Assist from the system.
.DESCRIPTION
    Removes Dell Support Assist from the system.

    Note: Other Dell SupportAssist related applications will not be removed. This script can be modified to account for them if needed.
      See line 43 for more details
By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use.
    Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. 
    Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. 
    Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. 
    Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. 
    Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. 
    Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. 
    EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).
.EXAMPLE
    (No Parameters)
    
    [Info] Dell SupportAssist found
    [Info] Removing Dell SupportAssist using msiexec
    [Info] Dell SupportAssist successfully removed
.OUTPUTS
    None
.NOTES
    Minimum OS Architecture Supported: Windows 10, Windows Server 2016
    Release Notes: Initial Release
#>

[CmdletBinding()]
param ()

begin {
    function Test-IsElevated {
        $id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
        $p = New-Object System.Security.Principal.WindowsPrincipal($id)
        $p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)
    }
}
process {
    if (-not (Test-IsElevated)) {
        Write-Error -Message "[Error] Access Denied. Please run with Administrator privileges."
        exit 1
    }

    # Get UninstallString for Dell SupportAssist from the registry
    $DellSA = Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*', 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*' | 
        Where-Object { $_.DisplayName -eq 'Dell SupportAssist' } | 
        # Replace the line above with additions like below
        # Where-Object { $_.DisplayName -eq 'Dell SupportAssist' -or $_.DisplayName -eq 'Dell SupportAssist Remediation' } |
        # Other Dell apps related to SupportAssist:
        # 'Dell SupportAssist OS Recovery'
        # 'Dell SupportAssist'
        # 'DellInc.DellSupportAssistforPCs'
        # 'Dell SupportAssist Remediation'
        # 'SupportAssist Recovery Assistant'
        # 'Dell SupportAssist OS Recovery Plugin for Dell Update'
        # 'Dell SupportAssistAgent'
        # 'Dell Update - SupportAssist Update Plugin'
        # 'Dell SupportAssist Remediation'
        Select-Object -Property DisplayName, UninstallString

    # Check if Dell SupportAssist is installed
    if ($DellSA) {
        Write-Host "[Info] Dell SupportAssist found"
    }
    else {
        Write-Host "[Info] Dell SupportAssist not found"
        exit 1
    }

    $DellSA | ForEach-Object {
        $App = $_
        # Uninstall Dell SupportAssist
        if ($App.UninstallString -match 'msiexec.exe') {
            # Extract the GUID from the UninstallString
            $null = $App.UninstallString -match '{[A-F0-9-]+}'
            $guid = $matches[0]

            Write-Host "[Info] Removing Dell SupportAssist using msiexec"
            try {
                $Process = $(Start-Process -FilePath "msiexec.exe" -ArgumentList "/x $($guid) /qn /norestart" -Wait -PassThru)
                if ($Process.ExitCode -ne 0) {
                    throw $Process.ExitCode
                }
            }
            catch {
                Write-Host "[Error] Error removing Dell SupportAssist. Exit Code: $($Process.ExitCode)"
                exit 1
            }
        }
        elseif ($App.UninstallString -match 'SupportAssistUninstaller.exe') {
            Write-Host "[Info] Removing Dell SupportAssist using SupportAssistUninstaller.exe..."
            try {
                $Process = $(Start-Process -FilePath "$($App.UninstallString)" -ArgumentList "/arp /S /norestart" -Wait -PassThru)
                if ($Process.ExitCode -ne 0) {
                    throw $Process.ExitCode
                }
            }
            catch {
                Write-Host "[Error] Error removing Dell SupportAssist. Exit Code: $($Process.ExitCode)"
                exit 1
            }
        }
        else {
            Write-Host "[Error] Unsupported uninstall method found."
            exit 1
        }
    }

    $SupportAssistClientUI = Get-Process -Name "SupportAssistClientUI" -ErrorAction SilentlyContinue
    if ($SupportAssistClientUI) {
        Write-Host "[Info] SupportAssistClientUI still running and will be stopped"
        try {
            $SupportAssistClientUI | Stop-Process -Force -Confirm:$false -ErrorAction Stop
        }
        catch {
            Write-Host "[Warn] Failed to stop the SupportAssistClientUI process. Reboot to close process."
        }
    }

    Write-Host "[Info] Dell SupportAssist successfully removed"
    exit 0
}
end {
    
    
    
}

 

Discriminação detalhada

O script é modular, está claramente documentado e segue as normas administrativas. Aqui está uma explicação detalhada de sua lógica principal:

  1. Verificação administrativa
    O script começa com uma função chamada Test-IsElevated para verificar se está sendo executado com privilégios de administrador. Caso contrário, ele gera um erro e interrompe a execução.
  2. Pesquisa no Registro para strings de desinstalação
    Ele consulta os caminhos do Registro tanto de 32 bits quanto de 64 bits na seguinte localização:

    • HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*
    • HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*
  3. Ele filtra a entrada em que o campo DisplayName seja exatamente “Dell SupportAssist”. Vale destacar que o script pode ser facilmente ampliado para incluir outros componentes relacionados ao SupportAssist.

Desinstalar o Logic

Se a string do desinstalador incluir msiexec.exe, o script extrai o GUID do produto e executa a desinstalação de forma silenciosa usando:
PowerShell
Revisão
msiexec.exe /x {GUID} /qn /norestart

  1. Se o desinstalador utilizar o SupportAssistUninstaller.exe, ele o executa com os parâmetros de instalação silenciosa apropriados.
  2. Limpeza do processo
    Após a desinstalação, o programa verifica se há algum processo SupportAssistClientUI em execução e tenta encerrá-lo de forma controlada.
  3. Saída e registro em log
    O script exibe mensagens de log claras para cada etapa e encerra normalmente com códigos de status adequados.

Possíveis casos de uso

Estudo de caso

Um provedor de serviços gerenciados que está implementando uma frota de 150 laptops Dell para uma empresa do setor financeiro deseja garantir que apenas os softwares essenciais sejam instalados. Utilizando o mecanismo de scripts do NinjaOne, o MSP implanta esse script do PowerShell em todos os terminais. Em questão de minutos, o Dell SupportAssist é removido de forma silenciosa em todo o ambiente, economizando inúmeras horas de intervenção manual e garantindo uma configuração de software padrão consistente.

Comparações

Os métodos tradicionais para remover o Dell SupportAssist incluem:

  • Acessar manualmente o Painel de Controle → Programas
  • Usando o próprio desinstalador do SupportAssist da Dell (que pode não estar instalado em todos os casos)
  • Depender de programas de desinstalação de terceiros, que muitas vezes carecem de transparência

Em comparação com esses métodos, este script do PowerShell:

  • Não requer interação com a interface gráfica
  • É silencioso e escalável
  • Pode ser implantado usando ferramentas de RMM, como o NinjaOne
  • Oferece controle de versão e rastreabilidade

Implicações

A remoção proativa do Dell SupportAssist pode reduzir sua superfície de ataque, melhorar o desempenho do sistema e alinhar o ambiente aos padrões corporativos. As ferramentas OEM costumam causar atritos na gestão e podem introduzir telemetria ou tarefas agendadas que contradizem as políticas de controle centralizado. O uso de scripts como esse melhora a padronização e a conformidade dos terminais.

Recomendações

  • Faça o teste em um ambiente de laboratório antes da implantação em produção.
  • Utilize uma plataforma RMM (como o NinjaOne) para implantação em massa e acompanhamento dos resultados.
  • Amplie o script para lidar com outros bloatwares conhecidos ou aplicativos OEM redundantes.
  • Revise regularmente os softwares instalados usando ferramentas de inventário e automatize a limpeza sempre que possível.

Considerações finais

Ferramentas como o NinjaOne permitem que profissionais de TI e MSPs automatizem e otimizem as tarefas de gerenciamento de dispositivos. Este script do PowerShell ilustra como a criação de scripts personalizáveis, aliada a uma plataforma de RMM robusta, pode oferecer soluções rápidas e escaláveis. Se o seu objetivo é manter um ambiente de terminais enxuto e seguro, combinar scripts como este com os recursos de automação do NinjaOne é a melhor abordagem para as operações modernas de TI.

FAQs

Não. Por padrão, este script é direcionado apenas ao “Dell SupportAssist”. Você pode modificar facilmente o filtro do Registro para incluir outros aplicativos relacionados.

O script verifica se os valores de UninstallString são válidos. Se a entrada estiver incorreta, o script registra um erro e encerra a execução com segurança.

Geralmente, não. No entanto, se ainda houver processos residuais em execução, pode ser recomendável reiniciar o sistema para liberar totalmente os arquivos associados.

Sim. É totalmente compatível com scripts baseados em GPO, implantações do SCCM e plataformas de RMM, como o NinjaOne.

Próximas etapas

Montar uma equipe de TI eficaz requer uma solução centralizada que seja a principal ferramenta de entrega de serviços. Com NinjaOne, a TI monitora, gerencia, protege e oferece suporte a todos os dispositivos, onde quer que estejam, dispensando infraestrutura complexa no local.

Saiba mais sobre a solução NinjaOne Remote Script Deployment, agende uma demonstração, ou inicie sua avaliação gratuita da plataforma NinjaOne.

Categorias:

Recomendados para você