Enterprise IT environments often require the removal of bloatware or OEM-installed utilities that offer little value in managed infrastructure settings. One such application is Dell SupportAssist, a tool that, while helpful for consumer systems, can pose administrative and security challenges in business or managed services environments. For IT professionals and MSPs seeking efficiency and control, using PowerShell for such tasks offers automation, reliability, and repeatability.
This article explores how to remove Dell SupportAssist with PowerShell from Windows machines. Whether you’re maintaining endpoint hygiene or preparing systems for imaging and redeployment, this script can be an essential addition to your toolkit.
Background
Dell SupportAssist is a pre-installed utility that proactively checks system health and interacts with Dell’s support backend. While valuable in consumer contexts, it’s often unnecessary in managed environments, where endpoint monitoring is performed using professional RMM tools like NinjaOne. Left unattended, utilities like SupportAssist can run background services, consume resources, and even introduce security vulnerabilities due to outdated components or unnecessary services.
Given the lack of a standardized uninstaller across versions, IT professionals require a reliable, automated solution. This PowerShell script addresses that need by detecting Dell SupportAssist and uninstalling it using system registry references and appropriate uninstallation methods.
The Script
#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 { }
Detailed Breakdown
The script is modular, clearly documented, and adheres to administrative standards. Here’s a breakdown of its core logic:
- Administrative Check
The script begins with a function Test-IsElevated to ensure it’s running with administrator privileges. If not, it throws an error and halts execution. - Registry Lookup for Uninstall Strings
It queries both 32-bit and 64-bit registry paths under:- HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*
- HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*
- It filters for the entry where DisplayName is exactly “Dell SupportAssist”. Notably, the script is easily extendable to include other SupportAssist-related components.
Uninstall Logic
If the uninstaller string includes msiexec.exe, the script extracts the product GUID and executes the uninstall silently using:
powershell
CopyEdit
msiexec.exe /x {GUID} /qn /norestart
- If the uninstaller uses SupportAssistUninstaller.exe, it invokes that with appropriate silent flags.
- Process Cleanup
After uninstalling, it checks for a running SupportAssistClientUI process and attempts to stop it gracefully. - Exit and Logging
The script provides clear log messages for each step and exits cleanly with appropriate status codes.
Potential Use Cases
Case Study
A managed service provider onboarding a fleet of 150 Dell laptops for a financial firm wants to ensure that only essential software is installed. Using NinjaOne’s scripting engine, the MSP deploys this PowerShell script across all endpoints. Within minutes, Dell SupportAssist is removed silently across the environment, saving countless hours of manual intervention and ensuring a consistent software baseline.
Comparisons
Traditional methods of removing Dell SupportAssist involve:
- Manually navigating to Control Panel → Programs
- Using Dell’s own SupportAssist uninstaller (which may not be installed consistently)
- Relying on third-party uninstallers, which often lack transparency
Compared to those methods, this PowerShell script:
- Requires no GUI interaction
- Is silent and scalable
- Can be deployed using RMM tools like NinjaOne
- Offers version control and auditability
FAQs
Q1: Will this script remove all Dell-related software?
No. This script only targets “Dell SupportAssist” by default. You can easily modify the registry filter to include additional related applications.
Q2: What if the uninstall string is incorrect or missing?
The script checks for valid UninstallString values. If the entry is malformed, the script logs an error and exits safely.
Q3: Is a reboot required after execution?
Generally, no. However, if residual processes are still running, a reboot might be recommended to fully release associated files.
Q4: Can this script be used with Group Policy or SCCM?
Yes. It is fully compatible with GPO-based scripts, SCCM deployments, and RMM platforms like NinjaOne.
Implications
Removing Dell SupportAssist proactively can reduce your attack surface, improve system performance, and align the environment with enterprise standards. OEM tools often create management friction and may introduce telemetry or scheduled tasks that contradict centralized control policies. Using scripts like this enhances endpoint standardization and compliance.
Recommendations
- Test in a lab before deployment in production.
- Use an RMM platform (like NinjaOne) for mass deployment and result tracking.
- Extend the script to handle other known bloatware or redundant OEM applications.
- Regularly review installed software using inventory tools and automate cleanup where possible.
Final Thoughts
Tools like NinjaOne empower IT professionals and MSPs to automate and streamline device management tasks. This PowerShell script exemplifies how customizable scripting, paired with a strong RMM platform, can deliver fast, scalable solutions. If your goal is to maintain a lean and secure endpoint environment, combining scripts like this with NinjaOne’s automation capabilities is a best-in-class approach to modern IT operations.