$app = Get-WmiObject -Class Win32_Product | Where-Object { 
    $_.Name -match "Software Name" 
}

$app.Uninstall()

Edit: Rob found another way to do it with the Filter parameter:

$app = Get-WmiObject -Class Win32_Product `
                     -Filter "Name = 'Software Name'"
Answer from Jeff Hillman on Stack Overflow
Top answer
1 of 15
184
$app = Get-WmiObject -Class Win32_Product | Where-Object { 
    $_.Name -match "Software Name" 
}

$app.Uninstall()

Edit: Rob found another way to do it with the Filter parameter:

$app = Get-WmiObject -Class Win32_Product `
                     -Filter "Name = 'Software Name'"
2 of 15
65

EDIT: Over the years this answer has gotten quite a few upvotes. I would like to add some comments. I have not used PowerShell since, but I remember observing some issues:

  1. If there are more matches than 1 for the below script, it does not work and you must append the PowerShell filter that limits results to 1. I believe it's -First 1 but I'm not sure. Feel free to edit.
  2. If the application is not installed by MSI it does not work. The reason it was written as below is because it modifies the MSI to uninstall without intervention, which is not always the default case when using the native uninstall string.

Using the WMI object takes forever. This is very fast if you just know the name of the program you want to uninstall.

$uninstall32 = gci "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" | foreach { gp $_.PSPath } | ? { $_ -match "SOFTWARE NAME" } | select UninstallString
$uninstall64 = gci "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" | foreach { gp $_.PSPath } | ? { $_ -match "SOFTWARE NAME" } | select UninstallString

if ($uninstall64) {
$uninstall64 = $uninstall64.UninstallString -Replace "msiexec.exe","" -Replace "/I","" -Replace "/X",""
$uninstall64 = $uninstall64.Trim()
Write "Uninstalling..."
start-process "msiexec.exe" -arg "/X $uninstall64 /qb" -Wait}
if ($uninstall32) {
$uninstall32 = $uninstall32.UninstallString -Replace "msiexec.exe","" -Replace "/I","" -Replace "/X",""
$uninstall32 = $uninstall32.Trim()
Write "Uninstalling..."
start-process "msiexec.exe" -arg "/X $uninstall32 /qb" -Wait}
🌐
Microsoft Learn
learn.microsoft.com › en-us › powershell › module › packagemanagement › uninstall-package
Uninstall-Package (PackageManagement) - PowerShell | Microsoft Learn
Uninstall-Package -InputObject ( Get-Package -Name NuGet.Core -RequiredVersion 2.14.0 ) Overrides warning messages about conflicts with existing commands.
Discussions

Why is it so difficult to uninstall a program using PS?
#Set MSI variable $app = Adobe $msi = ((Get-Package | Where-Object {$_.Name -like "*$app*"}).fastpackagereference) #Uninstall start-process msiexec.exe -wait -argumentlist "/x $msi /qn /norestart" More on reddit.com
🌐 r/PowerShell
77
48
June 1, 2024
How can I uninstall the Windows Powershell?
It's absent from the Add/Remove list. What's the procedure for uninstalling Windows PowerShell? More on learn.microsoft.com
🌐 learn.microsoft.com
1
0
August 21, 2023
how to uninstall a program using CMD or Power Shell ?
I need to use a script with either CMD or Power Shell to uninstall a program from a windows machine. To be clear , I already know how to use the “wmic” & "Get-WmiObject -Class Win32_Product ", what I am looking for is how to remove the programs listed under Programs & Feature in control ... More on community.spiceworks.com
🌐 community.spiceworks.com
13
12
February 28, 2019
Need PowerShell working script to uninstall software from Control Panel,Registry
Hi Experts, I have to uninstall Microsoft Visual C++ 2019 X64 Additional Runtime - 14.29.30133 & Microsoft Visual C++ 2019 X86 Additional Runtime - 14.29.30133 software from my Control panel and Registry. I have tried from the below powershell code, I am not getting any error. More on community.spiceworks.com
🌐 community.spiceworks.com
24
12
March 3, 2023
🌐
Redmondmag.com
redmondmag.com › articles › 2019 › 08 › 27 › powershell-to-uninstall-an-application.aspx
How To Use PowerShell To Uninstall an Application -- Redmondmag.com
August 27, 2019 - Now you can uninstall the application by calling the Uninstall method. Here is the command: ... The technique that I just showed you is the generally accepted way of removing applications from a Windows desktop using PowerShell.
Top answer
1 of 2
2

Within PowerShell, this is very easy to do.

The below block of script will take a computer name, your username and password, connect to the remote computer and list all installed software by name:

$computerName = "SomeComputerName"
$yourAccount = Get-Credential
Invoke-Command -ComputerName $computerName -Credential $yourAccount -ScriptBlock {
    Get-WmiObject Win32_Product | Select Name
}

When you have the name of the product you want to uninstall remotely - you can the perform an uninstall like this:

$computerName = "SomeComputerName"
$appName = "AppName"
$yourAccount = Get-Credential
Invoke-Command -ComputerName $computerName -Credential $yourAccount -ScriptBlock {
    Get-WmiObject Win32_product | Where {$_.name -eq $appName} | ForEach {
        $_.Uninstall()
    }
}

In the above eaxmples - replace "SomeComputerName" with the name of the computer you wish to uninstall from.

You can also make the script prompt you for a computer name if you prefer with the following line:

$computerName = Read-Host "Enter Computer Name"

If you have multiple computers with the same piece of software that you want to uninstall - you can also define an array of computers to work with and do uninstalls from lots of machines:

$computerNames = @("SomeComputerName1", "SomeComputerName2", "SomeComputerName3")
$appName = "AppName"
$yourAccount = Get-Credential
ForEach ($computerName in $computerNames) {
    Invoke-Command -ComputerName $computerName -Credential $yourAccount -ScriptBlock {
        Get-WmiObject Win32_product | Where {$_.name -eq $appName} | ForEach {
            $_.Uninstall()
        }
    }
}
2 of 2
0

If you create a file called "servers.txt" and place your list of servers in it you could also reference $computerNames as follows:

$computerNames = Get-Content "C:\some-directory\servers.txt"
$appName = "AppName"
$yourAccount = Get-Credential
ForEach ($computerName in $computerNames) {
    Invoke-Command -ComputerName $computerName -Credential $yourAccount -ScriptBlock {
        Get-WmiObject Win32_product | Where {$_.name -eq $appName} | ForEach {
            $_.Uninstall()
        }
    }
}

I've used this approach many times in production environments and it seems to work for me. Always test this in a non-production environment before completing in a prod environment.

🌐
Advanced Installer
advancedinstaller.com › software-uninstall-with-powershell-package-management.html
How to uninstall software using Package management in PowerShell
April 8, 2023 - 2. Packages installed with msi, msu, Programs or PowerShellGet can be uninstalled with the Uninstall-Package cmdlet. You can add more providers by using the Install-PackageProvider cmdlet. 3. Similar to the WMI method, search for your package using the following command:
Find elsewhere
🌐
Microsoft Learn
learn.microsoft.com › en-us › answers › questions › 1350059 › how-can-i-uninstall-the-windows-powershell
How can I uninstall the Windows Powershell? - Microsoft Q&A
August 21, 2023 - These updates might have names like "Windows Management Framework" followed by a version number. Uninstall: Right-click on the update related to PowerShell and select "Uninstall" or "Uninstall/Change."
🌐
MiniTool
minitool.com › home › news › how to uninstall program using cmd/powershell windows 10/11
How to Uninstall Program Using CMD/PowerShell Windows 10/11 - MiniTool
September 28, 2025 - You can also right-click on the title bar of PowerShell utility and select Edit -> Find, type a part of the app name and click Find Next until you find the target app. Step 3. Next, type the command Remove-AppxPackage <App Name>, e.g. ...
🌐
Recast Software
recastsoftware.com › home › recast blog › using powershell to uninstall applications
Using PowerShell to Uninstall Applications - Recast
February 27, 2024 - Uninstall apps with PowerShell and trigger ConfigMgr hardware inventory updates for accurate, real-time software compliance.
🌐
Microsoft Learn
learn.microsoft.com › en-us › powershell › module › powershellget › uninstall-module
Uninstall-Module (PowerShellGet) - PowerShell | Microsoft Learn
The Uninstall-Module cmdlet uninstalls a specified module from the local computer. You can't uninstall a module if other modules depend on it or the module wasn't installed with the Install-Module cmdlet.
Top answer
1 of 13
12

I need to use a script with either CMD or Power Shell to uninstall a program from a windows machine.

To be clear , I already know how to use the “wmic” & "Get-WmiObject -Class Win32_Product ", what I am looking for is how to remove the programs listed under Programs & Feature in control panel but doesn’t show up when using WMIC (Product Get Name) or (Get-WmiObject -Class Win32_Product) commands.

I can use these script easily:

1. CMD:

wmic

product get name

product where name=“program name” call uninstall

2. Power Shell:

$app = Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -match “Software Name” } >> $app.Uninstall()

Both scripts above helped me remove specific programs only, but the list I have under control panel still have lots of other applications that I am hoping to use similar script to remove them.

Any idea / suggestion is highly appreciated ?

2 of 13
3

If the application was installed by MSI, and if you know the GUID, you can use msiexec to uninstall the application. That is the most efficient way, provided that the prerequisites are true.

Win32_Product is very inefficient.

Scripting Blog [archived] – 13 Nov 11

Use PowerShell to Quickly Find Installed Software - Scripting Blog [archived]

Summary: Learn how to use Windows PowerShell to quickly find installed software on local and remote computers.   Microsoft Scripting Guy Ed Wilson here. Guest Blogger Weekend concludes with Marc Carter. The Scripting Wife and I were lucky enough...

Scripting Blog [archived] – 14 Dec 11

Use PowerShell to Find and Uninstall Software - Scripting Blog [archived]

Summary: Learn how to use Windows PowerShell to get software installation locations, and to uninstall software from remote computers. Hey, Scripting Guy! We have a dumb application that we have to use at work. The company has released a new version...

🌐
Windows OS Hub
woshub.com › uninstall-apps-with-powershell-windows
Uninstalling Apps Using PowerShell or CMD on Windows 11 and 10 | Windows OS Hub
2 weeks ago - Invoke-Command -ComputerName mun-dc01 -ScriptBlock { Get-Package -Name "Notepad++*" | Uninstall-Package} WinRM PowerShell remoting must be enabled on the remote computer.
🌐
MajorGeeks
majorgeeks.com › content › page › uninstall_command_prompt.html
How to Uninstall Programs With PowerShell or Command Prompt in Windows 10 & 11 - MajorGeeks
June 28, 2021 - Open either the Command Prompt of PowerShell as Administrator. Type in wmic and press Enter. Next, let's get a list of installed programs by typing in product get name, and press Enter.
🌐
Microsoft
devblogs.microsoft.com › dev blogs › scripting blog [archived] › use powershell to find and uninstall software
Use PowerShell to Find and Uninstall Software - Scripting Blog [archived]
April 29, 2019 - Summary: Learn how to use Windows PowerShell to get software installation locations, and to uninstall software from remote computers. Hey, Scripting Guy! We have a dumb application that we have to use at work. The company has released a new version of this application, and I am trying to write a Windows PowerShell script to […]
🌐
PowerShell Forums
forums.powershell.org › powershell help
Trying to uninstall software - PowerShell Help - PowerShell Forums
January 11, 2019 - hi, I’m trying to uninstall software via powershell and have the following code: [pre] $SoftVer = Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall, HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall | Get-ItemProperty | Where-Object {$_.DisplayName -match “avira” } | Select-Object -Property DisplayName, UninstallString ForEach ($ver in $SoftVer) { If ($ver.UninstallString) { $uninst = $ver.UninstallString & cmd c/ “$uninst” } } [/pre] ...
🌐
4sysops
4sysops.com › home › blog › articles › uninstall programs (remotely) with powershell
Uninstall programs (remotely) with PowerShell – 4sysops
July 28, 2023 - Get-CimInstance -Class Win32_Product -ComputerName <Remote-PC> | where name -like " PowerShell*" If you send the output of this command through a pipe to Get-Member, you will not find an uninstall method.
🌐
Action1
action1.com › home › blog › how to uninstall software using powershell in windows 10
How to Uninstall Software Using PowerShell in Windows 10
September 19, 2025 - Let’s figure out how to remove apps built-in Windows 10. You can use PowerShell to uninstall programs silently.