Everyone knows the hassle about all the preinstalled Universal Windows Programs and we all know that there are already hundreds of PowerShell scripts out there to get rid of them.
But they all didn’t really fit my needs, although it’s basically just a Remove-AppxPackage and a Remove-AppxProvisionedPackage which needs to be run.
Now what’s so special about my script?
Nothing special, it just does a little bit more than only removing the unwanted UWPs.
It detects if it’s running in a Task Sequence (in WinPE or the installed OS), in SYSTEM context or in user context with(out) admin-token (“Run as Administrator”). Depending on that, the logfile is placed under a different location, Remove-AppxProvisionedPackage is executed (or not), the Policy Registrykey to disable consumer features is set (if configured) and it still takes care of a bug which is fixed since 1803 (just in case of …).
It’s configuration is stored in a XML-file, there you can set which UWPs should be removed (or not). This XML can also be given as a parameter (-Xml Path\To\Xml) when calling the script.
By default the Powershell window will be hidden (to not disturb the user) when it’s executed, this could be prevented by using the switch -nohide.
I’ve also included a Get-NewUWPs.ps1 which you can run on an installed OS to compare the installed UWPs with the ones in the configuration XML and writes them to a separate file. So you only need to copy them over to your config XML and set them to “Remove” or “Keep”.
Was this helpful?
0 / 0