VMware Horizon Community
Oneboss302
Enthusiast
Enthusiast

Removal of Windows 10 Apps

Hello. Struggling to find a method of removing apps such as 3D Viewer, Feedback Hub, Get Help, Weather, Etc from my windows 10 golden image. I have tried the Powershell commands such as Get-AppxPackage -AllUsers | Remove-AppxPackage and Get-AppxProvisionedPackage -AllUsers  | Remove-AppxPackage and they are removed for my user (admin account) but when I publish the desktop, they are installed again. I have tested by creating a new local account prior to publishing and they do not show then. Is this something with the Sysprep that is done when publishing perhaps? I have also tried the Optimizer and same results.

 

Also tried a machine startup script to call the powershell via GPO and still nothing. Pulling my hair out on this one.

My Script:

Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*AdobePhotoshopExpress*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Candy*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Duolingo*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*EclipseManager*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*FarmVille*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Microsoft.3DBuilder*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Microsoft.BingNews*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Microsoft.BingTranslator*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Microsoft.BingWeather*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Microsoft.FreshPaint*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Microsoft.Getstarted*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Microsoft.Messaging*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Microsoft.MicrosoftOfficeHub*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Microsoft.MicrosoftSolitaireCollection*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Microsoft.NetworkSpeedTest*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Microsoft.Office.OneNote*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Microsoft.People*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Microsoft.SkypeApp*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Microsoft.WindowsAlarms*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Microsoft.WindowsFeedbackHub*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Microsoft.WindowsMaps*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Microsoft.XboxApp*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Microsoft.ZuneMusic*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Microsoft.ZuneVideo*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Netflix*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*PandoraMediaInc*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*PicsArt*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Twitter*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Wunderlist*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Phone*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*windowscommunicationsapps*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*bingfinance*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*zunevideo*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*zunevideo*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*WindowsPhone*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Phone*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Money*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Windowsalarms*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*bingsports*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*sports*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*sway*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*Wifi*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName}

Labels (1)
0 Kudos
6 Replies
gelliottaus
Contributor
Contributor

It is a dark art... refer to these sites for the steps:
https://gal.vin/posts/remove-uwp-apps/

https://github.com/Digressive/Remove-Win10-Apps

0 Kudos
wsanyi0001
Contributor
Contributor

Hi!

Your syntax seems likely a bit wrong. I would better use the following:

Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*AdobePhotoshopExpress*"} | ForEach-Object { Remove-AppxProvisionedPackage -Online -PackageName $_.PackageFullname}

The info, you need is the PackageFullname.

You can try it out:


This is an example for Ms Cortana (it only works after the user has been logged in but for a lot of other applications it should work properly, for example for Microsoft.XboxGameOverlay)_

===================================================================================

PS C:\WINDOWS\system32> (Get-AppxPackage -AllUsers Microsoft.549981C3F5F10).PackageFullname

Microsoft.549981C3F5F10_1.1911.21713.0_x64__8wekyb3d8bbwe

I wish you all the best and good luck! 😉

0 Kudos
Juan-Herrera
Contributor
Contributor

Hello,

Please follow this link to prepare you Golden Image without Windows 10 Apps. https://techzone.vmware.com/resource/manually-creating-optimized-windows-images-vmware-horizon-vms#r...

Pay special attention when you have to login in audit mode, this will help you to configure your image for all user that login to this image. I leave information about Audit mode https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/audit-mode-overview?view=wind...

Regards

Juan

0 Kudos
CTRIM
Enthusiast
Enthusiast

This is what I use

Windows-Decrapifier 

0 Kudos
CTRIM
Enthusiast
Enthusiast

All of these are powershell commands...

3D Viewer (assuming you mean 3DBuilder...) Line 443 in decrapifier code

Get-AppxPackage "Microsoft.3DBuilder" | Remove-AppxPackage

Feedback Hub Line 471 in decrapifier code

Get-AppxPackage "Microsoft.WindowsFeedbackHub" | Remove-AppxPackage

Get Help Line 474 in decrapifier code

Get-AppxPackage "Microsoft.GetHelp" | Remove-AppxPackage

Weather Line 447 in decrapifier code

Get-AppxPackage "Microsoft.BingWeather" | Remove-AppxPackage

0 Kudos
wsanyi0001
Contributor
Contributor

Hi,

you use the following syntax: Get-AppxPackage "Microsoft.3DBuilder" | Remove-AppxPackage

This one works for W10 1909 and maybe up to 20H2 but from 21H2 sure, it does not work.

It also depends on, at which phase do you want to remove these apps? Do you use SCCM, or some other image user application for creating a task sequence, or do you want to run it after the installation?

If you want to remove the apps after the installation, the syntax, which was working for 21H2 is the following:

If you want to create an own logfile for it, I give you an example for that:

 

1. Removing the InbuildApps from the machine after the full installation/during the installation phase (building this script into the ISO/WMI/image, or whatever solution you have):

For the echoing:
=============

cmd.exe /C echo Removing Microsoft.SkypeApp %date% %time% >>C:\windows\temp\apprmv.txt

The command using cmdlet without writing all the details into the logfile:
==========================================================

powershell -command " Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -match $Microsoft.SkypeApp} | Remove-AppxProvisionedPackage -Online | Out-Null"

The powershell command itself without writing all the details into the logfile:
=============================================================

Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -match $Microsoft.SkypeApp} | Remove-AppxProvisionedPackage -Online | Out-Nul

The command using cmdlet with writing all the details into the logfile:
=======================================================

powershell -command " Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -match $Microsoft.SkypeApp} | Remove-AppxProvisionedPackage -Online | Start-Transcript -path C:\Windows\Temp\apprmv.txt -append"

The powershell command itself with writing all the details into the logfile:
==========================================================

Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -match $Microsoft.SkypeApp} | Remove-AppxProvisionedPackage -Online | Start-Transcript -path C:\Windows\Temp\apprmv.txt -append

With Win 10 22H2 I could, not test it out yet. Also not with Win 11.

If you want to remove from a Userprofile, use the following method:
======================================================

For the echoing:
=============

cmd.exe /C echo Removing Microsoft.SkypeApp %date% %time% >>C:\windows\temp\apprmv.txt

 

The command using cmdlet with writing all the details into the logfile:
=======================================================

powershell -command " (Get-AppxPackage -AllUsers Microsoft.SkypeApp).PackageFullname | Remove-AppxPackage | Start-Transcript -path C:\Windows\Temp\apprmv.txt -append"

The powershell command itself with writing all the details into the logfile:
==========================================================

(Get-AppxPackage -AllUsers Microsoft.SkypeApp).PackageFullname | Remove-AppxPackage | Start-Transcript -path C:\Windows\Temp\apprmv.txt -append

 

Or if you want to remove it from |All userprofiles|, which already have been created on a specific machine:
=====================================================================================

The command using cmdlet with writing all the details into the logfile:
=======================================================

powershell -command " (Get-AppxPackage -AllUsers Microsoft.SkypeApp).PackageFullname | Remove-AppxPackage -AllUsers | Start-Transcript -path C:\Windows\Temp\apprmv.txt -append"

The powershell command itself with writing all the details into the logfile:
==========================================================

(Get-AppxPackage -AllUsers Microsoft.SkypeApp).PackageFullname | Remove-AppxPackage -AllUsers | Start-Transcript -path C:\Windows\Temp\apprmv.txt -append

I hope, that could help you!

0 Kudos