Remove default app Windows 10 PowerShell

Windows 10 comes with a variety of built-in apps that are accessible from the All Apps view in the Start menu. Although these apps don’t take up too much space on your computer, you might want to remove some of them just for the sake of decluttering your Start menu.

Some of the built-in apps, such as Money, News, Sports, Phone Companion, Get Skype, Get Office and Get Started, can be removed in the usual way by simply right-clicking on an app and choosing the Uninstall option. However, other apps are a bit more tricky to uninstall.

Here’s how you can remove the default Windows 10 apps from your device and reinstall them, if needed.

Uninstall built-in Windows 10 apps with PowerShell

  1. Open PowerShell and select the Run as administrator option.
  2. Copy and paste the following command into the PowerShell prompt and then press Enter to uninstall an app (replace the appname placeholder with one of the app names listed below): Get-AppxPackage *appname* | Remove-AppxPackage


Looking for an easy way to access a remote Windows PC? FixMe.IT is the world’s #1 rated remote support app that allows to connect to any remote computer in 3 easy steps. Click here to see how it works.

Complete list of the built-in Windows 10 apps that can be removed:

  • onenote
  • windowsalarms
  • windowscalculator
  • windowscommunicationsapps
  • windowscamera
  • windowsmaps
  • windowsphone
  • windowsstore
  • zunemusic
  • zunevideo
  • xboxapp
  • skypeapp
  • bingnews
  • bingfinance
  • bingweather
  • soundrecorder
  • photos
  • people

Note that you cannot uninstall the most important default apps, such as Microsoft Edge, Cortana and Contact Support.

Reinstall default Windows 10 apps with a single PowerShell command

If you decide to put the removed apps back into the Start menu, you can easily reinstall them with a single PowerShell command.

  1. Open PowerShell and select the Run as administrator option.
  2. Type in the following command and hit Enter: Get-AppxPackage -AllUsers| Foreach {Add-AppxPackage -DisableDevelopmentMode -Register “$($_.InstallLocation)\AppXManifest.xml”}

Restart your machine if nothing happens – the apps should appear in your Start menu upon signing back into the system.

Check out other Windows tips and tricks on our blog and follow us on Facebook, Twitter, or LinkedIn for new updates and useful how-to’s.

Popular Windows tips:
How to fix double login issue on Windows 10 Fall Creators Update
How to change the language of Welcome Screen in Windows 10
4 ways to fix the unmountable boot volume error in Windows 10
How to disable Windows 10 password prompt on wakeup
3 ways to switch user in Windows 10 without logoff

Learn More About FixMe.IT

Since the release of Windows 10, it has been common for organization to try and reduce the footprint of built-in apps (or default apps) in their reference images, or even during bare-metal deployment. Over the years, the community has provided several solutions on how to accomplish this including myself. During this time, I’ve attempted to keep my script updated after each new release of Windows 10. Up until now though, I’ve been behind on keeping it up-to-date, but rest assured, here’s the latest version that now supports Windows 10 version 20H2 and below.

Originally, this method was developed for when creating a reference image here, as shown in the blog post below. Recently however, Windows Autopilot has increased in popularity. This script also works for when provisioning new devices using Windows Autopilot for devices to be managed with Microsoft Intune.

Download script

I’ve made the script available on our GitHub repository along with all the other scripts that we’ve shared, and it’s available on the following URL:

https://github.com/MSEndpointMgr/ConfigMgr/blob/master/Operating%20System%20Deployment/Invoke-RemoveBuiltinApps.ps1

What’s new

  • Windows 10 version 2004 (20H1): Added Microsoft.VCLibs.140.00 to the white list.
  • Windows 10 version 20H2: Added Microsoft.MicrosoftEdge.Stable to the white list, but also extended the Feature on Demand V2 white list to include the following packages:
    • Notepad|MSPaint|PowerShell.ISE|ShellComponents

Using the script

As for using the script when creating a reference image for e.g. ConfigMgr, see the following posts for implementation guidance:

Remove Built-in apps when creating a Windows 10 reference image – MSEndpointMgr

Remove Built-in apps for Windows 10 version 1903 – MSEndpointMgr

As for Windows Autopilot and Intune, I’ve not written any posts as of yet, however the instructions are extremely simply. Create a PowerShell Script object, point towards the script and ensure it’s running in a 64-bit process in the System context, similar to the following configuration:

Remove default app Windows 10 PowerShell

What’s removed from the device after running this script

As for built-in appx provisioning packages, here’s the list of apps that will be removed:

  • Microsoft.549981C3F5F10
  • Microsoft.BingWeather
  • Microsoft.GetHelp
  • Microsoft.Getstarted
  • Microsoft.Microsoft3DViewer
  • Microsoft.MicrosoftSolitaireCollection
  • Microsoft.MixedReality.Portal
  • Microsoft.People
  • Microsoft.SkypeApp
  • Microsoft.Wallet
  • Microsoft.WindowsCamera
  • Microsoft.WindowsFeedbackHub
  • Microsoft.WindowsMaps
  • Microsoft.Xbox.TCUI
  • Microsoft.XboxApp
  • Microsoft.XboxGameOverlay
  • Microsoft.XboxGamingOverlay
  • Microsoft.XboxIdentityProvider
  • Microsoft.XboxSpeechToTextOverlay
  • Microsoft.YourPhone
  • Microsoft.ZuneMusic
  • Microsoft.ZuneVideo

And for the Feature on Demand V2 packages, these will be removed:

  • App.StepsRecorder
  • App.Support.QuickAssist
  • MathRecognizer
  • Microsoft.Windows.WordPad
  • OpenSSH.Client
  • Print.Fax.Scan
  • Print.Management.Console

As always, you can update the $WhiteListOnDemand and $WhiteListedApps variables to include more apps, ensuring they’re kept on the device, or of course remove entries from both if you think the already added apps does not fit in your environment.

Manually validate what will be removed by the script

In the case where you would want to adjust the whitelist defined in the script, for various reasons, use the sample script below for AppX provisioning packages that will be removed by default when running this script using the embedded list.

# White list of appx packages to keep installed
$WhiteListedApps = New-Object -TypeName System.Collections.ArrayList
$WhiteListedApps.AddRange(@(
    "Microsoft.DesktopAppInstaller",
    "Microsoft.MSPaint",
    "Microsoft.Windows.Photos",
    "Microsoft.StorePurchaseApp",
    "Microsoft.CompanyPortal",
    "Microsoft.WindowsAlarms",
    "Microsoft.WindowsCalculator",
    "Microsoft.WindowsStore",
    "Microsoft.Windows.ShellExperienceHost",
    "Microsoft.ScreenSketch",
    "Microsoft.HEIFImageExtension",
    "Microsoft.VP9VideoExtensions",
    "Microsoft.WebMediaExtensions",
    "Microsoft.WebpImageExtension",
    "Microsoft.Outlook.DesktopIntegrationServicess",
    "Microsoft.VCLibs.140.00",
    "Microsoft.MicrosoftEdge.Stable"
))

$AppArrayList = Get-AppxProvisionedPackage -Online | Select-Object -ExpandProperty DisplayName
foreach ($App in $AppArrayList) {
    if (($App -notin $WhiteListedApps)) {
        $AppPackageName = Get-AppxPackage -Name $App | Select-Object -ExpandProperty Name -First 1
        Write-Output -InputObject $AppPackageName
    }
}

As for the Feature on Demand V2 packages, you can run the following sample script to see what will be removed on the device:

# White list of Features On Demand V2 packages
$WhiteListOnDemand = "NetFX3|DirectX|Tools.DeveloperMode.Core|Language|InternetExplorer|ContactSupport|OneCoreUAP|WindowsMediaPlayer|Hello.Face|Notepad|MSPaint|PowerShell.ISE|ShellComponents"
$OnDemandFeatures = Get-WindowsCapability -Online -LimitAccess -ErrorAction Stop | Where-Object { $_.Name -notmatch $WhiteListOnDemand -and $_.State -like "Installed" } | Select-Object -ExpandProperty Name
Write-Output -InputObject $OnDemandFeatures

(48113)

Nickolaj Andersen

Chief Technical Architect and Enterprise Mobility MVP since 2016. Nickolaj has been in the IT industry for the past 10 years specializing in Enterprise Mobility and Security, Windows devices and deployments including automation. Awarded as PowerShell Hero in 2015 by the community for his script and tools contributions. Creator of ConfigMgr Prerequisites Tool, ConfigMgr OSD FrontEnd, ConfigMgr WebService to name a few. Frequent speaker at conferences such as Microsoft Ignite, NIC Conference and IT/Dev Connections including nordic user groups.