So you’ve installed Windows 10 enterprise edition only to find applications that you would consider to be consumer type apps such as Bing Finance, News, and Sports which is not what you would normally expect to find in an enterprise edition operating system version:
You can obtain a list of these app packages for the current user with the Get-AppxPackage PowerShell cmdlet. I’ve sorted the list of app packages by name in the following results:
1 | Get-AppxPackage | Sort-Object -Property Name | Select-Object -Property Name |
I’ve determined which app packages that I want to remove and I’ll remove them for the current user with the following PowerShell script:
1 2 3 4 5 6 7 8 9 10 | 'Microsoft.3DBuilder', 'Microsoft.BingFinance', 'Microsoft.BingNews', 'Microsoft.BingSports', 'Microsoft.MicrosoftSolitaireCollection', 'Microsoft.People', 'Microsoft.Windows.Photos', 'Microsoft.WindowsCamera', 'microsoft.windowscommunicationsapps', 'Microsoft.WindowsPhone', 'Microsoft.WindowsSoundRecorder', 'Microsoft.XboxApp', 'Microsoft.ZuneMusic', 'Microsoft.ZuneVideo' | ForEach-Object { Get-AppxPackage -Name $_ | Remove-AppxPackage } |
The app packages that were previously removed no longer exist for the current user:
1 | Get-AppxPackage | Sort-Object -Property Name | Select-Object -Property Name |
One thing to keep in mind is this occurs for the current user so if you’re logging into your machine as a non-admin (which I highly recommend) and you run PowerShell elevated, whatever user you specify when you’re prompted for elevation is the user account the applications will be removed for. This will make it appear as if the command didn’t work.
The secret to removing these applications for the current user is that PowerShell doesn’t need to run elevated (run an admin) as shown in the previous examples where the PowerShell console doesn’t say “Administrator” in the title bar of the console window.
When complete, you should notice that those applications have been removed from your start menu, screen, or whatever they’re calling it now days:
Get-AppxPackage does have an AllUsers parameter but that only retrieves applications for all users and doesn’t remove them for all users when piping to Remove-AppxPackage.
You could also walk through the applications one by one and remove the desired ones by simply piping Get-AppxPackage to Remove-AppxPackage using the Confirm parameter:
1 | Get-AppxPackage | Remove-AppxPackage -Confirm |
What if you want to prevent these applications from being installed for any new user that’s created on your machine? Well, you’re in luck because these’s a cmdlet for that.
The Get-AppxProvisionedPackage cmdlet retrieves a list of app packages that are set to be installed for each new user that’s created. Note that this command does require elevation.
1 | Get-AppxProvisionedPackage -Online | Sort-Object -Property DisplayName | Select-Object -Property DisplayName |
When combined with the Remove-ProvisionedAppxPackage cmdlet, specific app packages can be removed from the current operating system image:
1 2 3 4 5 6 7 8 9 10 11 | $Packages = 'Microsoft.3DBuilder', 'Microsoft.BingFinance', 'Microsoft.BingNews', 'Microsoft.BingSports', 'Microsoft.MicrosoftSolitaireCollection', 'Microsoft.People', 'Microsoft.Windows.Photos', 'Microsoft.WindowsCamera', 'microsoft.windowscommunicationsapps', 'Microsoft.WindowsPhone', 'Microsoft.WindowsSoundRecorder', 'Microsoft.XboxApp', 'Microsoft.ZuneMusic', 'Microsoft.ZuneVideo' Get-AppxProvisionedPackage -Online | Where-Object DisplayName -In $Packages | Remove-ProvisionedAppxPackage -Online | Out-Null |
As you can see, the specified apps have been removed from the operating system image:
1 | Get-AppxProvisionedPackage -Online | Sort-Object -Property DisplayName | Select-Object -Property DisplayName |
The Remove-AppxProvisionedPackage cmdlet doesn’t remove the app packages that are already installed for any preexisting users, but it does prevent any new users from receiving the app packages that are removed from the operating system image.
Update
I received notification from fellow PowerShell MVP Emin Atac that there’s a known problem where sysprep fails after removing or updating Windows built-in Windows Store apps as referenced in KB2769827 so take that into consideration when removing apps.
µ
Is this something that can be done with an unattended installation?
I tried this on a dutch enterprise version. All commands work but after the sysprep command, the apps appear anyway. Then I combined your post with http://www.howtogeek.com/224798/how-to-uninstall-windows-10s-built-in-apps-and-how-to-reinstall-them/
and the apps do not appear anymore but the start button doesn’t work anymore.
Thank you for your very detailled article. I use this technic in my sccm task sequence TS and all apps like Xbox for example are gone at the end of the OSD.
But, i did an inplace upgrade from 10.0.240 to Windows 10 1511 with sccm current branch on my already deployed workstations and all this apps are back with the new version of Windows 10. Do you know how can i prevent those apps to reinstall after inplace upgrade ? Thanks
Renaud,
You would need to deploy the removal again after the upgrade to 1511. I was at a MS W10 deployment meeting a couple of weeks ago and this very thing was brought up. The MS technician clearly stated that branch updates are complete new kernel sources and thus are basically a complete OS reinstall. To add to that he also stated that as such these AppX packages will indeed be reinstalled with any branch update that they publish.
Hi there,
I’ve tried to run the script with MDT but apps are still there for new logged-in users.
The script must be run by user. It is better to create a GPO with the script at user login.
I tested and it is working but is taking too much time to apply it.
Thank you, you are 1 of 25 blogs who does explain it CORRECT and right.
There is a 1) SYSTEM part and 2) a per user APPX part.
If you want to automate this on a deployment you will need a SYSTEM package and one THAT RUNS per user account THAT was already ON the W10 client. If you USE Roaming profiles and the user has LOGGED on to another W10 you will also have to REMOVE those APPX per user on the machine (Or per roaming profile).
There has been a error with the 15XX to 1607 Migration where the APPX Came then Back after migration. MS called it a bug but it was by purpose. (ENTERPRISE Edition CBB)
This script does absolutely nothing…
Is there a way to remove the Appx from the install media/image?
Then disable the store-app push for each user.
Hi, you show how to remove appx, we want to removed.
Can you show us the command to remove all apps but the ones we want to keep.
$list2keep = ‘Microsoft.WindowsStore’,’Microsoft.WindowsCalculator’,’Microsoft.MicrosoftEdge’
Get-AppxProvisionedPackage -Online | Where-Object DisplayName -NotIn $list2keep | Remove-ProvisionedAppxPackage -Online
$list2keep = ‘Microsoft.WindowsStore’,’Microsoft.WindowsCalculator’,’Microsoft.MicrosoftEdge’
Get-AppxPackage | Where-Object Name -NotIn $list2keep | Remove-AppxPackage -Confirm
$list2keep = “Microsoft.WindowsStore”,”Microsoft.WindowsCalculator”,”Microsoft.MicrosoftEdge”
Get-AppxPackage | Sort-Object -Property Name | Where-Object Name -NotIn $list2keep | Select-Object -Property Name | Remove-AppxPackage -Confirm
Great article. Thanks for sharing. After three years since the original posting is there anything new to add. Are there better ways to get rid of the store and modern apps? Perhaps Enterprise LTSB?
OSDBuilder and “WIM Witch” can help you update and clean up your images.