The Deployment Guys

Helping to deploy your world automagically...

Removing Windows 8.1 Built-in Applications

Removing Windows 8.1 Built-in Applications

  • Comments 42
  • Likes

Last year I published a PowerShell script that is designed to remove the built-in Windows 8 applications when creating a Windows 8 image. Well now that Windows 8.1 has been released we must update the PowerShell script to work with Windows 8.1.

The script below takes a simple list of Apps and then removes the provisioned package and the package that is installed for the Administrator. To adjust the script for your requirements simply update the $AppList comma separated list to include the Apps you want to remove. The script is designed to work as part of an MDT or Configuration Manager task sequence. If it detects that you are running the script within a task sequence it will log the to the task sequence folder otherwise it will log to the Windows\temp folder.

    Purpose:    Remove built in apps specified in list
    Pre-Reqs:    Windows 8.1

# Main Routine

# Get log path. Will log to Task Sequence log folder if the script is running in a Task Sequence
# Otherwise log to \windows\temp



$tsenv = New-Object -COMObject Microsoft.SMS.TSEnvironment

$logPath = $tsenv.Value("LogPath")




Write-Host "This script is not running in a task sequence"

$logPath = $env:windir + "\temp"


$logFile = "$logPath\$($myInvocation.MyCommand).log"

# Start logging

Start-Transcript $logFile

Write-Host "Logging to $logFile"

# List of Applications that will be removed

$AppsList = "microsoft.windowscommunicationsapps","Microsoft.BingFinance","Microsoft.BingMaps",`






ForEach ($App in $AppsList)


$Packages = Get-AppxPackage | Where-Object {$_.Name -eq $App}

if ($Packages -ne $null)


      Write-Host "Removing Appx Package: $App"

      foreach ($Package in $Packages)


      Remove-AppxPackage -package $Package.PackageFullName





      Write-Host "Unable to find package: $App"


$ProvisionedPackage = Get-AppxProvisionedPackage -online | Where-Object {$_.displayName -eq $App}

if ($ProvisionedPackage -ne $null)


      Write-Host "Removing Appx Provisioned Package: $App"

      remove-AppxProvisionedPackage -online -packagename $ProvisionedPackage.PackageName




      Write-Host "Unable to find provisioned package: $App"



# Stop logging


When removing applications from Windows 8.1 it is important that you also create and deploy a custom start screen layout using the  export-layout PowerShell command. See my previous blog on how to customize the start screen for more guidance -

For more information on adding and removing apps please refer to this TechNet article.

This post was contributed by Ben Hunter, a Senior Product Marketing Manager with Microsoft

Disclaimer: The information on this site is provided "AS IS" with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the Terms of Use.

  • Nice, but what is the different to this code?


    get-appxpackage | remove-appxpackage

  • Hi Bernd,

    This script is designed to remove both installed and provisioned packages. It also gives you the  ability to remove the packages you list rather than all packages. There are some packages that may not want to remove and this gives you the option to be selective :).



  • Ben - Awesome post!

    A few comments.

    Under "Windows PowerShell ISE", Powershell v4.0, BuildVersion  6.3.9600.16394, in a Windows 8.1 workstation, I elevated permissions to "ExecutionPolicy: RemoteSigned"

    Still, I see -

    (1) "This host does not support transcription"

    (2) "Get-AppxProvisionedPackage : The requested operation requires elevation."

    Any thoughts?

  • Great post!  Thanks.

    Can I ask that you provide a link to download the script, as copy and paste screws up the formatting - At least it does on my machine/browser combination!


  • With regard to the general idea of Get-AppxPackage | Remove-AppxPackage, I wonder if The Deployment Guys have reviewed the post "Sysprep Error with windows 8.1" at A number of people including myself are unable to get SysPrep /generalize to work properly with Windows 8.1, and this is really derailing our deployment efforts. Get-AppxPackage | Remove-AppxPackage has been proposed as a workaround, but this appears to strip modern apps out of user profiles in newly imaged computers. I hope you can look into this issue and give us a SysPrep /generalize procedure that works for Windows 8.1 without errors or removing modern apps. Thanks.

  • Great Script, but two questions : In the script I see twice "Microsoft.Media.PlayReadyClient.2" is this a mistake ? and what application is "microsoft.windowscommunicationsapps"

  • I don't know how the PlayReadyClient got in the script twice, it must have been a cut and paste error :). I have fixed it now. The communications apps are the People, calendar, and mail apps. Thanks, Ben

  • afaik: the Package "microsoft.windowscommunicationsapps" contains the Mai and chat apps (and a few others) :)

  • Hi, any chance to remove Photos App?

  • How can i run this for all New users that sign in if im not using it to build a reference image and copying the Administrators profile?

  • I need to confirm im using this script correctly. I build a reference image with install.wim from 8.1 enterprise media . I run this script with TS ( or even manually while i have TS suspended) It does remove all the unwanted apps for the administrators account. I resume the TS to sysprep and capture the WIM. I then deploy the wim through a standard TS new computer deployment. Once its done i log into Administrator ( or any account) and all the apps i removed are back with "Error" and do not launch. Any help would be great.

  • I figured out my issue was with the reference image being syspreped already with the copyprofile already done before final deployment. The Script works very well... thank you.

  • I am getting an error "unable to find provisioned package". It removes the installed packages fine.. but not the provisioned ones.

  • Some packages cannot be removed from the script. As to the question about the copying of the profile, I think a combination of export start menu PowerShell CmdLet mixed with this video should work pretty good,

    Thanks again Ben for the script I only modified the start-transcript to work differently in logging because of the way I run the TS step

  • Is there any way to remove the Photos, Camera, and SkyDrive/OneDrive tile in Windows 8.1? This appears to have changed from 8.0 as there is no package to be removed any more.

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment