The reliable way to remove Windows 11 inbox AppX/MSIX applications during an SCCM (now Microsoft Configuration Manager) deployment is to run a PowerShell step after Setup Windows and ConfigMgr. Remove matching packages twice: use Remove-AppxProvisionedPackage to stop installation for future users, and Remove-AppxPackage to remove copies already installed for users. Do not treat this as a universal debloater: OEM Win32 software, Store dependencies and policy-controlled features require separate handling.
What “Windows 11 bloatware” includes
“Bloatware” is an organizational decision, not a fixed Microsoft list. It may include inbox AppX/MSIX packages such as Xbox components, Clipchamp, consumer Teams, News, Solitaire, Get Help, Feedback Hub, Phone Link and promotional applications. The inventory changes by Windows 11 release, edition, language, architecture and servicing state.
OEM support, diagnostic and promotional utilities are often Win32 applications. They require an MSI product-code uninstall, vendor executable, winget, registry-based detection or a Configuration Manager application—not Remove-AppxPackage. Consumer-experience suggestions, Widgets, Chat, OneDrive and Edge first-run behavior are policy or configuration matters rather than simple AppX deprovisioning.
Understand installed versus provisioned packages
Windows maintains two relevant AppX states:
- Installed package: present in an existing user profile.
Remove-AppxPackageremoves this state. - Provisioned package: stored in the Windows image and automatically installed for newly created users.
Remove-AppxProvisionedPackageremoves this state.
Removing a provisioned package does not necessarily remove copies already installed for active users. Microsoft documents this distinction in its AppX and DISM guidance. A deployment that needs both outcomes must perform both operations.
#1 Best Overall
- Less chaos, more calm. The refreshed design of Windows 11 enables you to do what you want effortlessly.
- Biometric logins. Encrypted authentication. And, of course, advanced antivirus defenses. Everything you need, plus more, to protect you against the latest cyberthreats.
- Make the most of your screen space with snap layouts, desktops, and seamless redocking.
- Widgets makes staying up-to-date with the content you love and the news you care about, simple.
- Stay in touch with friends and family with Microsoft Teams, which can be seamlessly integrated into your taskbar. (1)
Place the step after Windows and ConfigMgr setup
Use the full installed operating system, not Windows PE, for normal AppX cleanup. Place the step in this order:
- Apply operating-system image.
- Apply Windows settings and drivers.
- Run Setup Windows and ConfigMgr.
- Run the AppX-removal PowerShell step.
- Install required applications and packages.
- Apply organizational policies and capture or prepare the device.
Configuration Manager guidance recommends placing custom PowerShell actions after Setup Windows and ConfigMgr when they depend on the client or full Windows environment. See the task-sequence step documentation. Running in WinPE requires the PowerShell component and correct offline-target handling, so it is not the normal choice for this procedure.
Inventory the exact Windows 11 build
Run these commands as administrator on a representative deployed image:
Get-AppxProvisionedPackage -Online |
Sort-Object DisplayName |
Select-Object DisplayName, PackageName
Get-AppxPackage -AllUsers |
Sort-Object Name |
Select-Object Name, PackageFullName, PackageUserInformation
Use the results to build a release-specific removal list. Do not copy a package list from an old Windows 10 script. Package names can change after feature updates, language-pack installation, edition changes or OEM servicing.
Know which identifier a command expects
- DisplayName: friendly provisioned-package name.
- PackageName: provisioned package identity used by
Remove-AppxProvisionedPackage -PackageName. - PackageFullName: versioned installed identity used by
Remove-AppxPackage -Package. - PackageFamilyName (PFN): family identifier used by policy-based removal.
For example, find a PFN with:
Get-AppxPackage *Notepad* |
Select-Object Name, PackageFamilyName
Build an explicit, conservative removal list
Patterns make a list maintainable, but every match should be approved and tested against the target image:
$RemovePatterns = @(
'Microsoft.Xbox*'
'Microsoft.GamingApp*'
'Microsoft.BingNews*'
'Microsoft.BingWeather*'
'Microsoft.GetHelp*'
'Microsoft.Getstarted*'
'Microsoft.MicrosoftSolitaireCollection*'
'Microsoft.WindowsFeedbackHub*'
'Microsoft.YourPhone*'
'MicrosoftTeams*'
'Clipchamp.Clipchamp*'
)
Do not include core Store, framework or productivity components merely because they appear in inventory. Unless your organization has tested and approved their removal, exclude:
Microsoft.WindowsStore
Microsoft.StorePurchaseApp
Microsoft.DesktopAppInstaller
Microsoft.WindowsCalculator
Microsoft.Windows.Photos
Microsoft.WindowsNotepad
Microsoft.WindowsTerminal
Microsoft.VCLibs
Microsoft.UI.Xaml
Framework packages such as Microsoft.VCLibs and Microsoft.UI.Xaml may be dependencies for other applications. Broad wildcards can break application installation or future servicing.
Deployment-ready PowerShell script
Save the following as Remove-Windows11Bloatware.ps1. Customize the patterns after inventory, sign it where required, and test it on the exact image, language set and application baseline you deploy.
Rank #2
- STREAMLINED & INTUITIVE UI, DVD FORMAT | Intelligent desktop | Personalize your experience for simpler efficiency | Powerful security built-in and enabled.
- OEM IS TO BE INSTALLED ON A NEW PC with no prior version of Windows installed and cannot be transferred to another machine.
- OEM DOES NOT PROVIDE SUPPORT | To acquire product with Microsoft support, obtain the full packaged “Retail” version.
- PRODUCT SHIPS IN PLAIN ENVELOPE | Activation key is located under scratch-off area on label.
- GENUINE WINDOWS SOFTWARE IS BRANDED BY MIRCOSOFT ONLY.
[CmdletBinding()]
param(
[string]$LogPath = "$env:WINDIRTempRemove-Windows11Bloatware.log"
)
$ErrorActionPreference = 'Stop'
function Write-Log {
param(
[Parameter(Mandatory)][string]$Message,
[ValidateSet('INFO','WARN','ERROR')][string]$Level = 'INFO'
)
$timestamp = Get-Date -Format 'yyyy-MM-dd HH:mm:ss'
$line = "$timestamp [$Level] $Message"
Write-Output $line
Add-Content -Path $LogPath -Value $line
}
$RemovePatterns = @(
'Microsoft.Xbox*'
'Microsoft.GamingApp*'
'Microsoft.BingNews*'
'Microsoft.BingWeather*'
'Microsoft.GetHelp*'
'Microsoft.Getstarted*'
'Microsoft.MicrosoftSolitaireCollection*'
'Microsoft.WindowsFeedbackHub*'
'Microsoft.YourPhone*'
'MicrosoftTeams*'
'Clipchamp.Clipchamp*'
)
$ExcludePatterns = @(
'Microsoft.WindowsStore*'
'Microsoft.StorePurchaseApp*'
'Microsoft.DesktopAppInstaller*'
'Microsoft.VCLibs*'
'Microsoft.UI.Xaml*'
)
function Test-IsExcluded {
param([Parameter(Mandatory)][string]$Name)
foreach ($pattern in $ExcludePatterns) {
if ($Name -like $pattern) { return $true }
}
return $false
}
try {
New-Item -Path (Split-Path -Path $LogPath -Parent) -ItemType Directory -Force | Out-Null
Write-Log 'Starting Windows 11 AppX/MSIX removal.'
$os = Get-CimInstance Win32_OperatingSystem
Write-Log "Computer: $env:COMPUTERNAME"
Write-Log "OS: $($os.Caption); build $($os.BuildNumber)"
$provisioned = Get-AppxProvisionedPackage -Online
foreach ($package in $provisioned) {
$matched = $false
foreach ($pattern in $RemovePatterns) {
if (($package.DisplayName -like $pattern) -or ($package.PackageName -like $pattern)) {
$matched = $true; break
}
}
if (-not $matched) { continue }
if (Test-IsExcluded $package.DisplayName) {
Write-Log "Skipping excluded provisioned package: $($package.DisplayName)" 'WARN'
continue
}
try {
Write-Log "Removing provisioned package: $($package.PackageName)"
Remove-AppxProvisionedPackage -Online -PackageName $package.PackageName -ErrorAction Stop | Out-Null
} catch {
Write-Log "Failed to remove provisioned package $($package.PackageName): $($_.Exception.Message)" 'ERROR'
}
}
$installed = Get-AppxPackage -AllUsers
foreach ($package in $installed) {
$matched = $false
foreach ($pattern in $RemovePatterns) {
if ($package.Name -like $pattern) { $matched = $true; break }
}
if (-not $matched) { continue }
if (Test-IsExcluded $package.Name) {
Write-Log "Skipping excluded installed package: $($package.Name)" 'WARN'
continue
}
try {
Write-Log "Removing installed package for all users: $($package.PackageFullName)"
Remove-AppxPackage -Package $package.PackageFullName -AllUsers -ErrorAction Stop
} catch {
Write-Log "Failed to remove installed package $($package.PackageFullName): $($_.Exception.Message)" 'WARN'
}
}
Write-Log 'Windows 11 AppX/MSIX removal completed.'
exit 0
} catch {
Write-Log "Fatal error: $($_.Exception.Message)" 'ERROR'
exit 1
}
A pattern matching nothing is logged only indirectly by the absence of a removal. That is normally a non-error because package inventories differ; maintain a separate inventory report if you need explicit “not found” auditing. The script intentionally does not promise permanent removal: feature updates, Store activity, policies, language packs and OEM provisioning can change the inventory.
Add the script to the Configuration Manager task sequence
Create a Configuration Manager package containing the script, distribute it to the task-sequence distribution points, then open the Task Sequence Editor and choose:
Add
└── General
└── Run PowerShell Script
Configure the step as follows:
- Package: the package containing the script.
- Script name:
Remove-Windows11Bloatware.ps1. - Execution policy:
Bypass, or your approved enterprise policy. - Timeout: long enough for enumeration and removal; 15 minutes is a reasonable starting value to validate.
- Run account: Local System is normally sufficient.
- Continue on error: leave disabled for a baseline cleanup unless best-effort behavior is deliberate.
- Success codes:
0; add3010only if the script intentionally requests a restart.
Configuration Manager script parameters are values consumed by the script; do not enter PowerShell switches such as -NoLogo or -File as task-sequence parameters. The step must run unattended and should not restart the computer itself. Save the script in an encoding supported by your Configuration Manager process (Unicode or UTF-8 as validated in your environment), and digitally sign it when required by execution-policy controls.
You can create the step programmatically with the Configuration Manager cmdlets:
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →$step = New-CMTSStepRunPowerShellScript `
-Name "Remove Windows 11 Bloatware" `
-PackageId "ABC00042" `
-ScriptName "Remove-Windows11Bloatware.ps1" `
-ExecutionPolicy Bypass `
-TimeoutMins 15
Get-CMTaskSequence -Name "Windows 11 Enterprise Deployment" |
Add-CMTaskSequenceStep -Step $step
References: New-CMTSStepRunPowerShellScript and Add-CMTaskSequenceStep.
Verify the result
Check provisioning
Get-AppxProvisionedPackage -Online |
Where-Object { $_.DisplayName -like 'Microsoft.Xbox*' -or $_.DisplayName -like 'Clipchamp*' } |
Select-Object DisplayName, PackageName
Targeted packages should no longer be listed as provisioned.
Check installed copies
Get-AppxPackage -AllUsers |
Where-Object { $_.Name -like 'Microsoft.Xbox*' -or $_.Name -like 'Clipchamp*' } |
Select-Object Name, PackageFullName, PackageUserInformation
Any remaining entry should be explained by the log or by an intentional exclusion.
Read the logs
The script writes C:WindowsTempRemove-Windows11Bloatware.log. Configuration Manager task-sequence logging is commonly available at C:WindowsCCMLogssmstslogsmsts.log, although the exact location varies by task-sequence phase and operating-system state.
Free tools Windows power users keep installed
One-click scans. No signup required.
Rank #3
- Video Link to instructions and Free support VIA Amazon
- Great Support fast responce
- 15 plus years of experiance
- Key is included
Troubleshoot common failures
The app remains for the current user
Only the provisioned state was removed. Run the installed-package pass with Get-AppxPackage -AllUsers, or remove the package in the appropriate user context.
The package is not found
Check whether you used DisplayName, PackageName, PackageFullName or PFN in the wrong cmdlet. Re-run inventory on the deployed build; a different release or language may use a different identity.
Removal fails because of dependencies or protection
Review the package and its framework relationships. Do not broaden the wildcard to include VCLibs, UI.Xaml or other shared runtimes. A package can also be in use or protected by Windows.
Sysprep fails after Store-app changes
Microsoft documents Sysprep failures when Store apps are installed or updated inconsistently between users and the provisioned image. Inspect:
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Scan for outdated or missing drivers - takes under a minute3Clear out junk files and repair common Windows errorsGet-AppxPackage -AllUsers |
Format-List PackageFullName, PackageUserInformation
After confirming the package is not required, remove both the offending installed package and its provisioning entry. See Microsoft’s Sysprep Store-app troubleshooting guidance.
The app returns after an update
A feature update may introduce a new package name, servicing may re-provision it, a Store or policy action may reinstall it, or the OEM may have installed a separate Win32 edition. Re-run inventory after every target feature-update version and version the removal list with the Windows build.
OEM software remains
That software is probably Win32 rather than AppX. Handle it with its MSI product code, vendor uninstaller, winget, registry detection or a Configuration Manager application deployment.
Policy-based removal versus task-sequence cleanup
Microsoft’s policy-based inbox-app removal feature can maintain selected Store-app removal after deployment, but the current documentation limits it to Windows 11 version 24H2 or later on Enterprise and Education editions. The supported package is identified by PFN, and the Group Policy path is:
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Rank #4
Computer Configuration
└── Administrative Templates
└── Windows Components
└── App Package Deployment
└── Remove Default Microsoft Store packages from the system
See the current Microsoft policy-based inbox app removal documentation and verify support for the exact build. Microsoft’s Windows IT Pro announcements also describe the feature’s evolving scope: policy-based removal of pre-installed Store apps and dynamic app removal from managed devices.
Choose a task-sequence script when cleanup must occur before first sign-in, devices include Windows 11 Pro, package-specific logic is needed, or both provisioned and installed states must be handled. Choose policy for supported Enterprise/Education devices where ongoing enforcement matters. Many organizations use both: task-sequence cleanup during imaging, then policy or Configuration Manager remediation after updates.
Other deployment options
Offline WIM servicing
If you maintain a reference image, inspect an offline Windows directory with:
Get-AppxProvisionedPackage -Path C:MountWindows
Offline servicing can avoid online-user inconsistencies, but it adds image-maintenance complexity and still does not remove ordinary Win32 OEM software. Microsoft documents online and offline operations in its DISM/AppX guidance.
Intune remediation or Win32 deployment
These are useful for already-deployed or cloud-managed devices, especially with Autopilot, Entra ID or co-management. They are less suitable when the computer must be clean before the first user experience.
Community debloat tools
Community scripts can help identify package names, but production use should require reviewed source, version handling, exclusions, logging and change control. A transparent, version-controlled script is safer than an indiscriminate one-click remover.
Operational checklist
- Inventory installed and provisioned packages on each target Windows 11 release.
- Approve an explicit removal list and safety exclusions.
- Run after Setup Windows and ConfigMgr in the full operating system.
- Remove provisioned packages and installed copies separately.
- Log matches, skips and failures.
- Verify both package states and review
smsts.log. - Test Sysprep or capture workflows before production rollout.
- Handle OEM Win32 applications with a separate uninstall method.
- Retest after cumulative and feature updates.
The Bottom Line
A controlled, build-specific PowerShell step is the practical SCCM solution: inventory first, remove only approved AppX packages from both states, log every result, and use separate methods for OEM Win32 software and ongoing post-deployment enforcement.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →

