How can I uninstall an application using PowerShell?
Categories:
Effortless Application Uninstallation with PowerShell

Learn how to effectively remove applications from your Windows system using PowerShell commands, covering various installation methods and troubleshooting tips.
Uninstalling applications is a routine task for system administrators and power users. While Windows provides a graphical interface for this, PowerShell offers a more powerful, flexible, and automatable approach. This article will guide you through different methods to uninstall applications using PowerShell, catering to various installation types, from traditional MSI packages to modern Microsoft Store apps.
Understanding Application Installation Types
Before you can effectively uninstall an application, it's crucial to understand how it was installed. Different installation methods leave different traces on the system, requiring distinct PowerShell commands for removal. The most common types include:
- MSI (Windows Installer) Packages: These are traditional applications installed via
.msi
files. They register themselves with the Windows Installer service and are typically found in the 'Programs and Features' control panel. - EXE Installers: Many applications use custom
.exe
installers. These might register with Windows Installer, or they might use their own uninstallation routines. PowerShell often needs to invoke the application's specific uninstaller. - Microsoft Store Apps (UWP/AppX): Modern applications distributed through the Microsoft Store. These are managed differently than traditional desktop applications.
- Portable Applications: These applications don't require installation and can often be removed simply by deleting their folder. PowerShell isn't typically needed for these, but it can be used to clean up associated data.
flowchart TD A[Start Uninstallation Process] B{Application Type?} C[MSI/EXE Installer] D[Microsoft Store App] E[Portable App] F[Use Get-WmiObject/Get-Package] G[Use Get-AppxPackage] H[Delete Folder] I[Invoke Uninstaller] J[Remove-AppxPackage] K[End] A --> B B --> C B --> D B --> E C --> F F --> I I --> K D --> G G --> J J --> K E --> H H --> K
Decision flow for choosing the correct PowerShell uninstallation method.
Uninstalling MSI and Traditional Applications
For applications installed via Windows Installer (MSI) or traditional .exe
installers that register with the system, you can use Get-WmiObject
or Get-Package
(from PackageManagement module) to find the application and then invoke its uninstaller.
# Method 1: Using Get-WmiObject (Win32_Product - less reliable, can trigger repair)
# Not recommended for general use due to potential side effects.
# Use only if other methods fail and you understand the risks.
# Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -like "*ApplicationName*" } | ForEach-Object { $_.Uninstall() }
# Method 2: Using Get-WmiObject (Uninstall Registry Key - more robust)
# This method queries the registry for installed programs.
$app = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object { $_.DisplayName -like "*ApplicationName*" }
if ($app) {
Write-Host "Found application: $($app.DisplayName)"
if ($app.UninstallString) {
$uninstallCommand = $app.UninstallString
# Handle MSIEXEC commands
if ($uninstallCommand -match "msiexec.exe") {
$uninstallCommand += " /qn /norestart"
Write-Host "Executing MSI uninstall: $uninstallCommand"
Start-Process -FilePath "msiexec.exe" -ArgumentList ($uninstallCommand -replace "msiexec.exe ", "") -Wait -NoNewWindow
} else {
# For other uninstallers, try to execute directly
Write-Host "Executing custom uninstall: $uninstallCommand"
# Split command and arguments if necessary
$exePath = $uninstallCommand.Split(' ')[0]
$args = ($uninstallCommand -replace "^$([regex]::Escape($exePath)) ?", "")
Start-Process -FilePath $exePath -ArgumentList $args -Wait -NoNewWindow
}
} else {
Write-Warning "Uninstall string not found for $($app.DisplayName). Manual uninstallation may be required."
}
} else {
Write-Host "Application 'ApplicationName' not found."
}
PowerShell script to uninstall traditional applications using registry lookup.
# Method 3: Using Get-Package (requires PackageManagement module)
# This is often the most straightforward for many applications.
# First, find the package. Replace 'ApplicationName' with the actual name.
Get-Package -Name "*ApplicationName*" | Uninstall-Package
Uninstalling applications using the Get-Package
and Uninstall-Package
cmdlets.
*
) to account for variations in naming. For example, *Visual Studio Code*
instead of Visual Studio Code
.Uninstalling Microsoft Store (UWP/AppX) Applications
Microsoft Store applications, also known as Universal Windows Platform (UWP) or AppX packages, are managed using a different set of cmdlets. You'll primarily use Get-AppxPackage
to find them and Remove-AppxPackage
to uninstall.
# Step 1: Find the full name of the AppX package
# Use a part of the application name, e.g., 'Netflix', 'Candy Crush'
Get-AppxPackage -Name "*Netflix*"
# This will output details including the 'PackageFullName'.
# Example output: Name : Netflix
# Publisher : CN=Netflix, Inc._...
# PackageFullName : Netflix.Netflix_6.91.100.0_x64__8xx8r98765432
# Step 2: Uninstall the application using its PackageFullName
# Replace 'PackageFullName' with the actual full name obtained from Step 1
Get-AppxPackage -Name "*Netflix*" | Remove-AppxPackage
# To uninstall for all users on the machine (requires administrator privileges)
# Get-AppxPackage -AllUsers -Name "*Netflix*" | Remove-AppxPackage -AllUsers
PowerShell commands to uninstall Microsoft Store applications.
Remove-AppxPackage -AllUsers
. This will remove the application for all user profiles on the system, including the current one. Ensure you have proper backups or understand the implications before proceeding.Troubleshooting and Best Practices
Uninstallation isn't always straightforward. Here are some tips and best practices to handle common issues:
- Run PowerShell as Administrator: Many uninstallation commands require elevated privileges. Always start PowerShell with 'Run as Administrator'.
- Verify Application Name: Application names can be tricky. Use
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, UninstallString
to list all installed programs and their exactDisplayName
andUninstallString
. - Silent Uninstallation: For automated scripts, look for silent uninstall switches like
/qn
(for MSI) or/S
(for some custom installers). These prevent dialog boxes from appearing. - Reboot After Uninstall: Some applications require a system reboot to complete the uninstallation process and remove all files.
- Check for Residual Files: Even after uninstallation, some applications leave behind configuration files or empty folders. Manual cleanup might be necessary for a complete removal, especially in
Program Files
,AppData
, and the registry.
# Example: Listing all installed programs and their uninstall strings
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, Publisher, InstallDate, UninstallString | Format-Table -AutoSize
# For 64-bit applications on 64-bit systems (also check Wow6432Node)
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, Publisher, InstallDate, UninstallString | Format-Table -AutoSize
Listing installed applications and their uninstallation details from the registry.
winget
(Windows Package Manager) if it's available on your system. It can install, upgrade, and uninstall many applications with simple commands like winget uninstall <package_id>
.