How to Remove WinApps from Windows 10 & 11
- Last updated: Oct 5, 2025

Since Windows 10, Microsoft has unfortunately filled the Start Menu and the system with a number of unnecessary applications, often referred to as WinApps or WinAppx. While it is possible to remove them using PowerShell, Microsoft tends to reinstall these apps automatically — either when a new user logs in or during regular system updates.
In this guide, I’ll show you a simple and reliable method to automatically remove these unwanted apps every time a user logs into their session. This approach combines a PowerShell script with a scheduled task in Windows Task Scheduler. Each time a user signs in, the PowerShell script will run automatically and clean up the preinstalled apps.
PowerShell Script
We will create a PowerShell script named remove_winapps.ps1
inside the C:\ProgramData\Scripts\
directory so that it’s available for all users on the system. This script will remove most of the unnecessary preinstalled WinApps (or WinAppx packages) from Windows.
###########################
# Author : std.rocks
# Version : 1.0
# Date : 2025.10
# Role : Remove unwanted WinApps (AppX packages)
# Updates :
# - 1.0 (2025/10) : First Version
# Core system apps removal examples:
Get-AppxPackage -AllUsers | ? { $_.Name -match "windowsalarms" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "windowscommunicationsapps" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "windowscamera" } | Remove-AppxPackage -AllUsers
# Get-AppxPackage -AllUsers | ? { $_.Name -match "windowsCalculator" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "officehub" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "getstarted" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "zunemusic" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "windowsmaps" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "solitairecollection" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "zunevideo" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "bingnews" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "Microsoft.People" } | Remove-AppxPackage -AllUsers
# Get-AppxPackage -AllUsers | ? { $_.Name -match "photos" } | Remove-AppxPackage -AllUsers
# Get-AppxPackage -AllUsers | ? { $_.Name -match "windowsstore" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "soundrecorder" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "bingweather" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "Microsoft.MicrosoftOfficeHub" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "Microsoft.WindowsFeedbackHub" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "YourPhone" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "Microsoft.XboxGamingOverlay" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "gethelp" } | Remove-AppxPackage -AllUsers
# Additional package names (explicit matches)
Get-AppxPackage -AllUsers *WINDOWSMAPS* | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers *MICROSOFT.BINGNEWS* | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers *MICROSOFTCORPORATIONII.QUICKASSIST* | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers *MICROSOFT.GETSTARTED* | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers *MICROSOFT.ZUNEVIDEO* | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers *MICROSOFT.WINDOWSFEEDBACKHUB* | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers *MICROSOFT.ZUNEMUSIC* | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers *RIVETNETWORKS.KILLERCONTROLCENTER* | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers *MICROSOFT.TODOS* | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers *CLIPCHAMP.CLIPCHAMP* | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers *MICROSOFT.WIDGETSPLATFORMRUNTIME* | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers *MICROSOFT.MICROSOFTSOLITAIRECOLLECTION* | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers *MICROSOFT.GETHELP* | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers *MICROSOFT.BINGWEATHER* | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers *MICROSOFT.COPILOT* | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers *MICROSOFT.OUTLOOKFORWINDOWS* | Remove-AppxPackage -AllUsers
# Xbox-related apps
Get-AppxPackage -AllUsers | ? { $_.Name -match "Microsoft.Xbox.TCUI" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "Microsoft.XboxGameOverlay" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "Microsoft.XboxIdentityProvider" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "Microsoft.XboxSpeechToTextOverlay" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "xbox" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers *Microsoft.GamingApp* | Remove-AppxPackage -AllUsers
foreach ($app in (Get-AppxPackage -AllUsers | ? { $_.Name -match "xbox" })) { $app | Remove-AppxPackage -AllUsers }
You can customize this script by commenting out any line corresponding to apps you want to keep. Once saved, we’ll can configure a scheduled task to run it automatically at every user logon.
Scheduled Task
In this section, you'll learn how to create a new scheduled task that automatically runs your PowerShell script at user logon. This ensures the unwanted WinApps are removed every time someone signs in to Windows.
- First, open the Windows Task Scheduler:

- Create a new task in the Task Scheduler:

- Enter a name for the task, for example RemoveWinapps.
- Click Change User or Group... and set the user to
SYSTEM
so that the task runs with elevated privileges. - Select Run only when user is logged on to ensure the script executes during each user session.
- Check the option Hidden to keep the task invisible to standard users.
- In the Configure for dropdown, choose Windows 10 or your corresponding version.

- Go to the Triggers tab and click on New....
- In the Begin the task dropdown, select At log on.
- Choose Any user so the script runs for all accounts when they sign in.
- Leave other options by default, then click OK to confirm the trigger.

- Go to the Actions tab and click on New....
- In the Action dropdown, select Start a program.
- In the Program/script field, type
powershell.exe
. - In the Add arguments (optional) field, enter:
-Noninteractive -Noprofile -ExecutionPolicy bypass -Command "& 'C:\ProgramData\Scripts\remove_winapps.ps1'"
- Click OK to confirm the action.

powershell.exe
as the program, and add the argument -Noninteractive -Noprofile -ExecutionPolicy bypass -Command "& 'C:\ProgramData\Scripts\remove_winapps.ps1'"
to automatically execute the script at user logon.Sign out and sign back in. You should now have a cleaner Windows Start menu!
