-
Notifications
You must be signed in to change notification settings - Fork 5
Configuring Windows Apps
Remove Windows In-box Apps and Store Apps. Manage which apps are present on Windows devices by removing provisioned and user-installed packages.
Important
Removing provisioned packages (RemoveProvisionedPackage) requires installBehavior to be set to SYSTEM. IfinstallBehavior is USER, provisioned package removal is skipped and a warning is logged. Removing installed Appx packages (Remove) works in both SYSTEM and USER context.
The windowsApps module manages Windows In-box Apps and Store Apps removal based on configuration. It handles two distinct types of app packages, including both bundle and non-bundle packages:
-
Appx packages - apps currently installed for users on the device. Removing an Appx package uninstalls the app for all users. Use the
Removeproperty to control this behavior. -
Appx provisioned packages - app packages staged in the Windows image that are automatically installed for new user profiles during first sign-in. Removing a provisioned package prevents the app from being reinstalled for new users. Use the
RemoveProvisionedPackageproperty to control this behavior.
For each configured app, the module performs the following steps:
- Checks if the Appx package exists for all users
- Removes the package if marked for removal in configuration
- Checks for provisioned packages (affects new user profiles)
- Removes the provisioned package if found and marked for removal
In most deployment scenarios, both Remove and RemoveProvisionedPackage should be set to true for apps you want completely removed. Setting only Remove to true will uninstall the app for existing users, but new user profiles will still receive the app. Setting only RemoveProvisionedPackage to true will prevent future installations, but existing users will keep the app.
If an app listed in the configuration is not present on the device - either as an installed package or a provisioned package - the module logs the absence and moves on to the next app. No error is raised, making it safe to maintain a single configuration across devices with different app inventories. Non-removable app packages are also handled gracefully.
The first step is identifying which apps to remove. Use the PowerShell commands in the Reference section below to list installed and provisioned apps on your target devices.
The following shows the windowsApps configuration structure with two example apps configured for removal.
{
"windowsApps": {
"enabled": true,
"apps": [
{
"DisplayName": "Bing News",
"Name": "Microsoft.BingNews",
"Remove": true,
"RemoveProvisionedPackage": true
},
{
"DisplayName": "Bing Weather",
"Name": "Microsoft.BingWeather",
"Remove": true,
"RemoveProvisionedPackage": true
}
]
}
}The following properties are supported in the windowsApps section.
| Property | Description | Type | Required |
|---|---|---|---|
| windowsApps | |||
| enabled | Enable or disable the module | Boolean | No |
| apps (array) | |||
| DisplayName | Friendly name of the app - used for logging and readability | String | Yes |
| Name | Package name identifier used to match both Appx packages and provisioned packages. Must match the Name property from Get-AppxPackage or the DisplayName property from Get-AppxProvisionedPackage
|
String | Yes |
| Remove | Remove the Appx package for all users on the device. When set to false, the installed app is left in place |
Boolean | Yes |
| RemoveProvisionedPackage | Remove the provisioned package to prevent the app from being installed for new user profiles. When set to false, the provisioned package is left in place |
Boolean | Yes |
The commands below must be run from an elevated PowerShell prompt (Run as Administrator). These commands help identify the correct Name value for each app in the configuration.
List all installed Appx packages across all users, sorted by name.
Get-AppxPackage -AllUsers | Sort-Object "Name" | Select-Object "Name", "Version", "PackageFullName" | Format-Table -AutoSizeSearch for a specific app by name using a wildcard pattern.
Get-AppxPackage -AllUsers -Name "*BingNews*" | Select-Object "Name", "Version", "IsBundle", "NonRemovable"List all installed Appx packages and export the results to a CSV file for review.
Get-AppxPackage -AllUsers | Sort-Object "Name" | Select-Object "Name", "Version", "PackageFullName" | Export-Csv -Path "$env:TEMP\AppxPackages.csv" -NoTypeInformationList all provisioned packages available in the Windows image.
Get-AppxProvisionedPackage -Online | Sort-Object "DisplayName" | Select-Object "DisplayName", "PackageName", "Version" | Format-Table -AutoSizeSearch for a specific provisioned package by display name using a wildcard pattern.
Get-AppxProvisionedPackage -Online | Where-Object { $_.DisplayName -like "*BingNews*" } | Select-Object "DisplayName", "PackageName", "Version"List all provisioned packages and export the results to a CSV file for review.
Get-AppxProvisionedPackage -Online | Sort-Object "DisplayName" | Select-Object "DisplayName", "PackageName", "Version", "PublisherId" | Export-Csv -Path "$env:TEMP\AppxProvisionedPackages.csv" -NoTypeInformationTo get a side-by-side view of which apps are installed and which are provisioned, use the following approach.
$installed = Get-AppxPackage -AllUsers | Select-Object "Name" -Unique | Sort-Object "Name"
$provisioned = Get-AppxProvisionedPackage -Online | Select-Object "DisplayName" | Sort-Object "DisplayName"
Write-Host "`nInstalled Appx Packages:" -ForegroundColor Cyan
$installed | Format-Table -AutoSize
Write-Host "`nProvisioned Appx Packages:" -ForegroundColor Cyan
$provisioned | Format-Table -AutoSizeTip
The Name property from Get-AppxPackage and the DisplayName property from Get-AppxProvisionedPackage both correspond to the Name value in the Windows gecko configuration. Use either command to find the correct identifier for an app.
For more information, see the following resources.
- Get-AppxPackage - PowerShell reference for listing installed Appx packages
- Get-AppxProvisionedPackage - PowerShell reference for listing provisioned packages
- Remove-AppxPackage - PowerShell reference for removing installed Appx packages
- Remove-AppxProvisionedPackage - PowerShell reference for removing provisioned packages
Page revised: March 4, 2026
🦎 Windows gecko - Desired state configuration for Windows devices · Repository · License
Windows gecko wiki
Getting Started
Feature Modules
- Configuring Windows Apps
- Configuring Windows branding
- Configuring Windows Config
- Configuring Windows Features
- Configuring Windows Files
- Configuring Windows Groups
- Configuring Windows Registry
- Configuring Windows Run
- Configuring Windows Scheduled Tasks
- Configuring Windows Services
- Configuring Windows TCR
Contributing