Removing Windows 8.1 Built-in Applications

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.

Comments (45)

  1. Anonymous says:

    Hi, any chance to remove Photos App?

  2. Anonymous says:

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

  3. Ben Hunter says:

    Hi Dan,

    This is a PowerShell script. It will not work with VBS.


  4. Anonymous says:

    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"

  5. Very nice Script Ben, thanks for sharing this.

  6. Ben Hunter says:

    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.


  7. Ben Hunter says:

    Hi Peber,

    When a new user logs on for the first time the provisioned apps are installed for each user, this is most likely causing the long logon times. However 10-15 minutes is much longer than I have seen even with all apps installed.

    The logon times should be reduced after the apps are removed although I am not sure if this is the cause for you as your script essentially does the same thing as mine.

    Have you confirmed that the provisioned packages are actually being removed by using Get-appxprovisonedpackage -online after the removal process


  8. Bernd Steinwurm says:

    Nice, but what is the different to this code?


    get-appxpackage | remove-appxpackage

  9. Ben Hunter says:

    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 :).



  10. Rich says:

    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?

  11. mikec says:

    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!


  12. 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…/sysprep-error-with-windows-81. 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.

  13. Anonymous says:

    Update – This script will not work with Windows 8.1 a script for Windows 8.1 can be found here – http

  14. Anonymous says:

    Pingback from Windows 8.1: Die eingebaute Apps entfernen thema | germa2

  15. Anonymous says:

    Remove built in Windows 8.1 Apps with Powershell

  16. clab says:

    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?

  17. clab says:

    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.

  18. clab says:

    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.

  19. paul says:

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

  20. james says:

    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

  21. jim says:

    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.

  22. Unknown says:

    what does this mean? can I please a simpler version

  23. Rasini says:

    I think we can't uninstall Skydrive and Windows store from the above script?
    is it true?

  24. Steven says:

    Please update this script for Windows 8.1 Update 🙂

  25. nick says:

    Ben, the script works great if I run it manually on a PC! However, when I add it to a Task Sequence it runs and generates a log file in the %windir%/temp folder, but no apps are removed. Any suggestions?

    Here is the error for one app from the log file (it then continues to the next app generating the same error for each one listed in the script)…

    Removing Appx Package: microsoft.windowscommunicationsapps
    Get-AppxProvisionedPackage : An attempt was made to load a program with an
    incorrect format.
    At C:_SMSTaskSequencePackagesABC0002BRemoveWin8Apps.ps1:48 char:27
    + $ProvisionedPackage = Get-AppxProvisionedPackage -online | Where-Object
    {$_. …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [Get-AppxProvisionedPackage],
    + FullyQualifiedErrorId : Microsoft.Dism.Commands.GetAppxProvisionedPackag

    Unable to find provisioned package: microsoft.windowscommunicationsapps

  26. ML49448 says:

    Many Many thanks, got my cto off my back after running this script to remove the apps that slow down new user first login.

  27. Anonymous says:

    Pingback from Windows 8.1 Reference Image Planning Checklist |

  28. Anonymous says:

    Pingback from Windows 8.1 Reference Image Planning Checklist |

  29. Peber says:


    Can you explain me what the exact difference are between this script and the following commands in case of extremely long first logon times?

    Get-appxpackage -allusers | remove-appxpackage

    Get-appxprovisonedpackage -online | remove-appxprovisionedpackage -online

    I used the commands to delete apps but facin' extremely long first logon times.

    About 10 – 15 minutes.

    Are they gone after using this script in master image?

  30. Darren M says:

    I am getting the same result as Nick (April 9 command above) – it works great if I run it from an admin command prompt, however fails to remove apps, and logs the following messages to the log file when running via SCCM package (set to run with admin rights,
    whether a user is logged on or not)

    Removing Appx Package: microsoft.windowscommunicationsapps
    Get-AppxProvisionedPackage : An attempt was made to load a program with an
    incorrect format.
    At C:_SMSTaskSequencePackagesABC0002BRemoveWin8Apps.ps1:48 char:27
    + $ProvisionedPackage = Get-AppxProvisionedPackage -online | Where-Object
    {$_. …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [Get-AppxProvisionedPackage],
    + FullyQualifiedErrorId : Microsoft.Dism.Commands.GetAppxProvisionedPackag

    Unable to find provisioned package: microsoft.windowscommunicationsapps

  31. 127 says:

    how to fix when
    remove-AppxProvisionedPackage : The system cannot find the file specified.

  32. 127 says:

    How to fix when

    Get-appxprovisonedpackage -online | remove-appxprovisionedpackage -online
    find packages and cannot remove (Case path really do not exist, just some other Versions of it)

    DISM Appx Provider: PID=9028 TID=8408 Failed to open 'C:Program FilesWindowsAppsMicrosoft.BingNews_2014.326.2203.2627_neutral_~_8wekyb3d8bbweAppxMetadataAppxBundleManifest.xml'. – CPackageAdapter::CreateForRemove(hr:0x80070003)
    DISM Appx Provider: PID=9028 TID=8408 Failed while initializing package adapter for package 'Microsoft.BingNews_2014.326.2203.2627_neutral_~_8wekyb3d8bbwe' – CAppxManager::RemoveAllUserAppx(hr:0x80070003)
    DISM Appx Provider: PID=9028 TID=8408 Failed to remove package 'Microsoft.BingNews_2014.326.2203.2627_neutral_~_8wekyb3d8bbwe' – CAppxManager::ProcessCommandRemoveAllUserAppx(hr:0x80070003)
    DISM Appx Provider: PID=9028 TID=8408 Failed processing command to remove Appx package – CAppxManager::ExecuteCmdLine(hr:0x80070003)

  33. Horacio says:

    Hi, this script gives me "remove-AppxProvisionedPackage : Access is denied." for each package, what am I doing wrong?

  34. rohan says:

    Hi, any chance to remove Photos App, SkyDrive, Camera and Internet Explorer?

  35. John says:

    Hi, any chance to remove Photos, skydrive, camera and internet explorer from the metro?

  36. Steve says:

    I use this script to remove those apps from the start screen. Granted doesnt completely remove the apps but is a start. Skydrive needs a group policy to be applied and I havent seen anything else yet to resolve.

    Question I have is the same as Peber. When I just use these lines in my mdt reference image. The apps are removed but when I laydown the image with SCCM 2012 r2 all the apps are there again. I have copyprofile set in the settings package unattend.xml I am using
    when I lay down the wim but it's as if copyprofile isnt processing.

    Powershell.exe -Command "&{Get-appxPackage -AllUsers | Remove-AppxPackage -ErrorAction SilentlyContinue}"
    Powershell.exe -Command "&{Get-AppXProvisionedPackage -online | Remove-AppxProvisionedPackage -online -ErrorAction SilentlyContinue}"

    # Clean Windows Store
    attrib "C:ProgramDataMicrosoftWindowsStart MenuProgramsWindows Store.lnk" -S
    attrib "C:ProgramDataMicrosoftWindowsStart MenuProgramsWindows Store.lnk" -R
    del /Q "C:ProgramDataMicrosoftWindowsStart MenuProgramsWindows Store.lnk"
    # Clean Photos App
    attrib "C:ProgramDataMicrosoftWindowsStart MenuProgramsPhotosApp.lnk" -S
    attrib "C:ProgramDataMicrosoftWindowsStart MenuProgramsPhotosApp.lnk" -R
    del /Q "C:ProgramDataMicrosoftWindowsStart MenuProgramsPhotosApp.lnk"
    # Clean OneDrive
    attrib "C:ProgramDataMicrosoftWindowsStart MenuProgramsFileManager.lnk" -S
    attrib "C:ProgramDataMicrosoftWindowsStart MenuProgramsFileManager.lnk" -R
    del /Q "C:ProgramDataMicrosoftWindowsStart MenuProgramsFileManager.lnk"
    # Clean Camera
    attrib "C:ProgramDataMicrosoftWindowsStart MenuProgramsCamera.lnk" -S
    attrib "C:ProgramDataMicrosoftWindowsStart MenuProgramsCamera.lnk" -R
    del /Q "C:ProgramDataMicrosoftWindowsStart MenuProgramsCamera.lnk"

  37. Dan_IT says:

    How do you run this?
    Tried copy and pasting into a vbs file and it gives a compilation error.

  38. brad says:

    This freezes on each app. I have to ctrl + c it after each app uninstall. It does remove them one-by-one provided I continue stopping and manually restarting the script.

  39. Thad says:


    This works great. Thank you for the script to use. When I run this in a TS out of MDT 2013, the logfile just shows the Transcript start and stop blocks. Any thoughts on what could be causing this. All of the apps are removed correctly.

  40. johnxx says:

    Have some a powershell script to remove ms-reader .

  41. Craig says:

    This is brilliant thank you very much for sharing!!

  42. Dan_Vega says:

    Thanks Ben! This works great in Windows 10 as well, I just needed to change the list to match the updated app names.

  43. Anonymous says:

    A couple of years ago, Ben Hunter posted a script on the Deployment Guys blog that showed how to remove

  44. jithin says:

    Can I use this for windows 10?