sycnex / windows10debloater Goto Github PK
View Code? Open in Web Editor NEWScript to remove Windows 10 bloatware.
License: MIT License
Script to remove Windows 10 bloatware.
License: MIT License
I know it's not a Windows Store app but the OneDrive that's included with Windows 10 that always prompts you for an update after logging in, and that always downloads the update in the background, and hogs a lot of CPU resources is annoying. Can you script a way to get rid of that one too?
Hi there! I just tried the script, it's awesome, but the first time it was throwing me an error at 247/29, saying that there's a MissingEndCurlyBrace. I added the } to finish the function FixWhitelistedApps and the script worked fine afterwards.
Many thanks!
I had Ubuntu installed on my desktop before I ran this script, and it wiped out all of my Linux data. I imagine this is because Linux distributions are installed from the Windows Store now, but an exception or warning or something should be added to prevent future data loss of this type.
Greetings. I ran this today in it's current form and noted that Paint3D was removed even though it was whitelisted. I checked and the Version 1803 (Education) (with build 17134.112 () lists the appx Package for Paint3D looks like it is: Microsoft.MSPaint Microsoft.MSPaint_4.1805.15037.0_x64__8wekyb3d8bbwe . I amended your script and then retested satisfactorily. Thanks so much for your work on this script. You are a timesaving hero!
after I remove office from some kiosk style systems, onedrive for business is still there. is this something that can be added as an option?
When I elect to uninstall One Drive, the script hangs. This has now been attempted on two computers with the same result. What I end up doing is rebooting the PC, running the script again, and then opting out when prompted to uninstall One Drive. Please advise and thank you for your time.
Hey Sycnex, and the GitHub community
I would like to be able to add whitelisted apps to my personal preference.
The problem is when i try to add them to the $whitelistedapps
and to the function fixwhitelistedapps the apps are removed anyway.
Could you please explain how to do so? Would be a live saver.
What ive tried is:
• Adding them to the $whitelistedapps
• Adding them to the function FixWhitelistedApps on line 4 of the start of the function
• Adding them as another get-appxpackage underneath FixWhitelistedApps
Result: on new users the apps are still nowhere to be found.
Would it be possible to add a switch/option somewhere to the silent script to make it sysprep friendly? Basically, sysprep will fail if any apps from the appstore are installed on the current user profile. To get around this you need to get-appxpackage | remove-appxpackage . After doing this sysprep runs and when a user is logged onto a computer is built using the prepared image, the appropriate provisioned packages will be installed (App Store).
Thank you so much for this script. It does everything I need it to for sure.
I do have one question though as every time I get done with deployment it gives me the results and it shows 26 errors. All seem to come from the script but I don't have a clue to know which one's it's referencing. I am doing a clean build of v1803 right now to see if it results in the same but it doesn't have any effects on the install just not sure why I get errors. I am also removing the edge pdf parameter as I pretty much disable edge any way. Would love to clean them up if possible. Here is a screenshot of the errors. Thanks again for your hard work!
Not so much an issue, so pardon if not appropriate area to post.
How can I go about adding "Sticky Notes" for example, to whitelist? I notice the whitelist appears in several places in the code.
Thanks.
I'd recommend adding this line:
Get-AppxPackage | Where-Object {$_.Name -NotMatch $WhitelistedApps} | Remove-AppxPackage -ErrorAction SilentlyContinue
Right after this line:
Get-AppxPackage -AllUsers | Where-Object {$_.Name -NotMatch $WhitelistedApps} | Remove-AppxPackage -ErrorAction SilentlyContinue
This will remove apps from the currently logged in user account.
Hello,
Not sure if this is a issue or a design function, but I am trying to run the script via GPO when the computer starts up. The GPO is set at computer object and not user. It is producing a report but not removing any the default applications.
I am using the script "Windows10Debloater.ps1" without any switches in the command. Should this work on device start up via GPO?
Windows PowerShell transcript start
Start time: 20181106111402
Username: DOMAIN\SYSTEM
RunAs User: DOMAIN\SYSTEM
Configuration Name:
Machine: COMPUTER-ITTES (Microsoft Windows NT 10.0.17134.0)
Host Application: -ExecutionPolicy ByPass -File \DOMAIN.net\SysVol\DOMAIN.net\scripts\Remove Windows 10 Default Applications\Windows10Debloater.ps1
Process ID: 780
PSVersion: 5.1.17134.228
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.17134.228
BuildVersion: 10.0.17134.228
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
Transcript started, output file is C:\Windows10Debloater\PowerShell_transcript.PGB002V03-ITTES.BMc_ast2.20181106111402.txt
Thanks
I just ran the script and it removed some item but not all :( See attached transcript
PowerShell_transcript.BLACK15.8ubCUUyB.20180427222703.txt
Thanks in advance,
Downloaded fresh copy of 1803 ISO via Windows Media Creation tool, put on usb, installed to system, ran all updates, ran powershell ISE as admin, pasted Windows10Debloater.ps1 content into ISE. Chose Yes to remove all bloat.
Minecraft was still left over. Simply right clicked and uninstalled.
Based on the readme I assume Minecraft is supposed to be uninstalled as part of Windows10Debloater.ps1
Unrelated, is it possible to change Open File Explorer to This PC instead of Quick Access via powershell? Same thing, but to remove people/inkspace/set search to hidden?
Windows10Debloater/Windows10DebloaterSilent.ps1
Lines 26 to 27 in b7b8a1d
The store and photo apps in the provisioned list aren't being checked correctly, they should be checked against packagename, rather than name like FreshPaint and WindowsCalculator are checked.
Sometimes I want to run the debloat script as a non-privileged user. Some parts silently fail, but that is fine. It still removes user-specific apps, turns off cortana, fixes PDF defaults, etc.
The new update forces the script to quit if it isn't running as an admin, which is much less helpful.
If Microsoft Store gets removed by the script is there a way to restore it? I've looked all over the web and tried the various PowerShell commands, but I can't seem to find a way to get the Microsoft Store back.
The Windows10Debloater.ps1 script appears to be missing a final closing "}" on the last function.
There is a unexpected "}"character at line 227 of the script. I'd surgest removing the "}" at the end of line 226.
Kind regards
Rowan Janse
Hey all, this could be complete user error, I tried to run the Windows10Debloater on one of our laptops, but it would not remove the apps as specified.
I have not edited the files and I have seen no errors when running is.
I am just right clicking on the file and running it with PowerShell, maybe I am missing something?
Hi,
I have no idea why, but the Task "XblGameSaveTaskLogon" does not exist in our 1709 Enterprise Deployment. Capturing an image fails with an error message if we try to disable a non-existing task.
For testing purposes we replaced in sysprep PS1 the Script Line 164 with the following code:
$taskExists = Get-ScheduledTask | Where-Object {$_.TaskName -like "XblGameSaveTaskLogon" }
if ($taskExists) { Disable-ScheduledTask -TaskName XblGameSaveTaskLogon -ErrorAction SilentlyContinue }
Maybe you could add this kind of check for every task you are trying to disable?
We ran the script on Windows 10 1703 x64 Enterprise, and it seems to work, but the tiles are often left behind with labels showing the Appx ID values, rather than the ugly arrow symbols or icons. They are broken tiles which do not respond to clicks. This affects current user and new users which were not present (profiles) prior to running the script. Any recommendations?
Multiple errors when running script in Powershell.
PS C:> .\Windows10Debloater.ps1 -Start-Debloat -Remove-Keys -Protect-Privacy -Stop-EdgePDF
Security warning
Run only scripts that you trust. While scripts from the internet can be useful, this script can potentially harm your
computer. If you trust this script, use the Unblock-File cmdlet to allow the script to run without this warning
message. Do you want to run C:\Windows10Debloater.ps1?
[D] Do not run [R] Run once [S] Suspend [?] Help (default is "D"): R
At C:\Windows10Debloater.ps1:132 char:19
~
The '<' operator is reserved for future use.
At C:\Windows10Debloater.ps1:136 char:19
~
The '<' operator is reserved for future use.
At C:\Windows10Debloater.ps1:141 char:19
~
The '<' operator is reserved for future use.
At C:\Windows10Debloater.ps1:146 char:19
~
The '<' operator is reserved for future use.
At C:\Windows10Debloater.ps1:150 char:19
~
The '<' operator is reserved for future use.
At C:\Windows10Debloater.ps1:2508 char:227
~
The ampersand (&) character is not allowed. The & operator is reserved for future use; wrap an ampersand in double quotation marks ("&") to pass it as part of a string.
At C:\Windows10Debloater.ps1:2511 char:10
~
The '<' operator is reserved for future use.
At C:\Windows10Debloater.ps1:2527 char:24
<li class="mr-3">© 2018 <span title="0.15683s from unicorn ...
~
The ampersand (&) character is not allowed. The & operator is reserved for future use; wrap an ampersand in double quotation marks ("&") to pass it as part of a string.
At C:\Windows10Debloater.ps1:2527 char:36
<li class="mr-3">© 2018 <span title="0.15683s from unicorn ...
~
The '<' operator is reserved for future use.
At C:\Windows10Debloater.ps1:2527 char:42
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unexpected token 'title="0.15683s from unicorn-2504035863-4s1t0">GitHub' in expression or statement.
Not all parse errors were reported. Correct the reported errors and try again.
+ CategoryInfo : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : RedirectionNotSupported
PS C:>
Hi Richard,
Great work on the script!
I've found a couple of issues with the latest version (please correct me if I'm wrong!):
remove line 10 - 'Remove-AppxPackagesForSysprep -ErrorAction SilentlyContinue' as this function is no longer in the latest version.
Replace all instances of 'Microsoft.Paint3D' with 'Microsoft.MSPaint'
I am having issues removing PPIProjection - 'Connect' app - do you have any ideas about this at all?
Kind regards,
Ian
Nice work, thank you. Doing it as-is in hyper-V, then reviewing it afterwards.
Can you add/remove the "most used" section. Maybe a prompt, eh?
Ridding of get help, hp smart, mixed reality portal/viewer, onedrive returns, when going into add/remove asking to update, then just happens, ricoh driver utility, windows defender security center, connect.
Excuse me for any errors. I installed 1709, all was fine, then a update occurred and seemed to bring back some of these apps mentioned above.
Im running ".\Windows10Debloater.ps1 -debloat" but it still asks to Yes or Revert.
What switches will allow me to run true sliently without prompt is Task Sequence?
Windows10Debloater/Windows10Debloater.ps1
Line 22 in b7b8a1d
Freshpaint doesn't exist in Windows 10 anymore. This might be better being replaced with MSPaint, which is Paint 3D. Proper paint is available under windows accessories and unaffected by the app store.
It in fact does
Just got unpleasantly surprised when after editing the script to retain some apps that I need and running it, every app that I removed from the script and many more that weren't there, got removed.
My OS is now stripped of almost everything, except for things like 'OneDrive' and 'People'.
What the heck? Warhawks script used to work great, but this one 😮
Edit: How do I get stuff like Store, Calculator, Weather, SoundRecorder etc. back?
Param : The term 'Param' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is
correct and try again.
At line:8 char:1
Myself and another colleague have been having issues with "getting Ready" getting stuck for up to 40 minutes. the one thing that we have in common is this script. there is a service that gets turned off "dmwappushservice" this is the cause of the image getting stuck. You may want to leave that service on.
How I can solve this problem? Thank
Recently seems to be leaving behind a lot of junk. Spotify, SketchBook, News, Candy Crush, Disney Magic, Minecraft, and a few others aren't being uninstalled.
Tested on a number of different computers with clean installs of the latest Windows 10 builds.
In the most recent revision, the following line was removed:
Add-Type -AssemblyName PresentationCore,PresentationFramework
Unfortunately, this breaks WPF, meaning the script does nothing now! If I remove this line:
$ErrorActionPreference = 'silentlycontinue'
...the script produces a number of errors:
Unable to find type [Windows.MessageBoxButton].
At C:\Scripts\Windows10Debloater\Windows10Debloater.ps1:488 char:11
+ $Button = [Windows.MessageBoxButton]::YesNoCancel
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Windows.MessageBoxButton:TypeName) [], RuntimeException
+ FullyQualifiedErrorId : TypeNotFound
Unable to find type [Windows.MessageBoxImage].
At C:\Scripts\Windows10Debloater\Windows10Debloater.ps1:489 char:13
+ $ErrorIco = [Windows.MessageBoxImage]::Error
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Windows.MessageBoxImage:TypeName) [], RuntimeException
+ FullyQualifiedErrorId : TypeNotFound
Unable to find type [Windows.MessageBoxImage].
At C:\Scripts\Windows10Debloater\Windows10Debloater.ps1:490 char:9
+ $Warn = [Windows.MessageBoxImage]::Warning
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Windows.MessageBoxImage:TypeName) [], RuntimeException
+ FullyQualifiedErrorId : TypeNotFound
Unable to find type [Windows.MessageBox].
At C:\Scripts\Windows10Debloater\Windows10Debloater.ps1:503 char:12
+ $Prompt1 = [Windows.MessageBox]::Show($Ask,"Debloat or Revert",$Butto ...
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Windows.MessageBox:TypeName) [], RuntimeException
+ FullyQualifiedErrorId : TypeNotFound
Reinserting the Add-Type -AssemblyName PresentationCore,PresentationFramework
resolves this issue.
Otherwise a great script - keep up the top work!
I just noticed that some of the apps have been reinstalled. The date given for the reinstalled apps is a few days after I ran the script. Is it possible that Windows Update reinstalled these programs?
I've run it on two patched Win 10 1803 computers in the last week and it completes the debloat but afterward I get errors ("Error 0x80070522, A Required Privilege Is Not Held By The Client"). I managed to resolve it fairly quickly by enabling the magic admin account (net user administrator) and re-enabling full control for Administrators and read/write for authenticated users (doing just one didn't seem to fix it). Wondering if this is something in the script or just an EBKAC. Tested just now on another system, same result except when I changed the permissions for the user it still did not correct the problem and I couldn't copy to the C:\ drive.
remotesigned used to work, now it doesn't, only unrestricted works, did the script certificate expire?
Hi,
I am trying to understand why some privacy settings are only set for the current user, and some settings are applied to the Default_User. Regarding the sysprep PS1 Script, I would think that most settings should apply to the DEFAULT_USER instead of the current_user, right?
After Line 159, for testing purposes we added the following code:
#Stops the Windows Feedback Experience from sending anonymous data
Write-Output "Stopping the Windows Feedback Experience program"
$Period1 = 'Registry::HKU\Default_User\SOFTWARE\Microsoft\Siuf'
$Period2 = 'Registry::HKU\Default_User\SOFTWARE\Microsoft\Siuf\Rules'
$Period3 = 'Registry::HKU\Default_User\SOFTWARE\Microsoft\Siuf\Rules\PeriodInNanoSeconds'
If (!(Test-Path $Period3)) {
mkdir $Period1 -ErrorAction SilentlyContinue
mkdir $Period2 -ErrorAction SilentlyContinue
mkdir $Period3 -ErrorAction SilentlyContinue
New-ItemProperty $Period3 -Name PeriodInNanoSeconds -Value 0 -Verbose -ErrorAction SilentlyContinue
}
Write-Output "Setting Mixed Reality Portal value to 0 so that you can uninstall it in Settings"
$Holo = 'Registry::HKU\Default_User\SOFTWARE\Microsoft\Windows\CurrentVersion\Holographic'
If (Test-Path $Holo) {
Set-ItemProperty $Holo -Name FirstRunSucceeded -Value 0 -Verbose
}
#Disables live tiles
Write-Output "Disabling live tiles"
$Live = 'Registry::HKU\Default_User\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\PushNotifications'
If (!(Test-Path $Live)) {
mkdir $Live -ErrorAction SilentlyContinue
New-ItemProperty $Live -Name NoTileApplicationNotification -Value 1 -Verbose
}
#Disables People icon on Taskbar
Write-Output "Disabling People icon on Taskbar"
$People = 'Registry::HKU\Default_User\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People'
If (!(Test-Path $People)) {
mkdir $People -ErrorAction SilentlyContinue
New-ItemProperty $People -Name PeopleBand -Value 0 -Verbose
}
#Disables suggestions on start menu
Write-Output "Disabling suggestions on the Start Menu"
$Suggestions = 'Registry::HKU\Default_User\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager'
If (Test-Path $Suggestions) {
Set-ItemProperty $Suggestions -Name SystemPaneSuggestionsEnabled -Value 0 -Verbose
}
So far, this works for us just fine. Can you please explain why these settings are only applied to the Current User by your script? I guess there is a reason behind this?
Just wanted to post my experience with v1803 of Windows 10. Not to bad. Just a few. I see the top 2 are xbox related and the rest I'm uncertain of. I'll deploy again using a usb drive and pxe one more time to see if it's consistent. I used the -sysprep and -debloat parameters but not the edgepdf. It gave me issues on 1703.
When using this as a deployment using MDT at a image of Windows 10 1709 it spits out 120+ errors at the end of every deployment. Ofcourse the script continue's on error but would you know a solution for this?
Thanks in advance
So, I’ve got another issue I noticed but first of all I want to thank you for your work since the script is just awesome!
the store is not uninstalled which is fine and I wouldn’t want it to be uninstalled. My issue lays that there are often there are apps that require Xbox to be installed to work, almost always games. Since I do not want bloatware but all of my functionality to work I am massaging you once again.
I cannot find what apps are required to run Xbox games on google so I tried some myself:
What I first tried is adding the following apps to the white list: Microsoft.XboxGameOverlay, Microsoft.XboxGamingOverlay, Microsoft.Services.Store.Engagement, Microsoft.XboxSpeechToTextOverlay, Microsoft.Xbox.TCUI.
I confirmed the apps where on the system after installation and tried to install a game to test. Unfortunately, it made no difference so I tried removing the removal of the scheduled tasks because I didn’t know what they did just for testing but that didn’t change anything.
So how I test is installing this app: https://www.microsoft.com/en-us/store/p/age-of-empires-castle-siege/9wzdncrfjb5l
When it says connection error (it doesn’t give an error without running this script on my deployment) it means it’s still missing an app or multiple apps.
I hope you can help me out, thanks in advance.
I grabbed the .ZIP but noticed that the $whitelistapp has only a few apps...
#Removes AppxPackages
#Credit to /u/GavinEke for a modified version of my whitelist code
[regex]$WhitelistedApps = 'Microsoft.Paint3D|Microsoft.WindowsCalculator|Microsoft.WindowsStore|Microsoft.Windows.Photos|CanonicalGroupLimited.UbuntuonWindows'
Get-AppxPackage -AllUsers | Where-Object {$.Name -NotMatch $WhitelistedApps} | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxProvisionedPackage -Online | Where-Object {$.PackageName -NotMatch $WhitelistedApps} | Remove-AppxProvisionedPackage -Online -ErrorAction SilentlyContinue
I'm also noticing it finishes but doesn't really remove anything.... Am I running it wrong? I ran it in an elevated prompt it didn't seem to error out but noticed this in the output:
Uninstalling bloatware, please wait.
Path :
Online : True
Path :
Online : True
Path :
Online : True
Path :
Online : True
Path :
Online : True
Seems to do this for every app it tries to uninstall.
After using the debloater this popped up in my windows 10 updating section. Could there be a further explanation on why this may be and how to undo it?
Thank you
The list of "Bloatware that is removed" includes "Store". Is this different then the Microsoft Store?
The code appears to whitelist the Windows Store (Microsoft.WindowsStore) so if they are the same thing then one should be changed.
For what it is worth, I have seen comments in various other cleanup scripts/discussions that say it is a bad idea to remove the store.
I am not seeing a silent version of this? Am I missing something - i use this for MDT deployments and now it prompts me.
HELLLLLP :-)
There are now 2 versions of my Windows10Debloater - There is an interactive version, and a pure silent version. The silent version now utilizes the switch parameters: -Sysprep, -Debloat, and -StopEdgePDF. The silent version can be useful for deploying MDT Images/sysprepping or any other way you deploy Windows 10. This will work to remove the bloatware during the deployment process.
The interactive version is what it implies - a Windows10Debloater script with interactive prompts. This one should not be used for deployments that require a silent script with optional parameters.
Despite the exception in the script, the Store, Calculator, and Photos are being removed.
I don't understand why, but adding these lines to the end of the script brings them back:
Get-AppxPackage -allusers Microsoft.Paint3D | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -allusers Microsoft.WindowsCalculator | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -allusers Microsoft.WindowsStore | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -allusers Microsoft.Windows.Photos | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
After applying on 1703, windows can't reset normally : after closing services and shutdown the display the PC is not halted and stuck.
Running the current master branch of Windows10SysPrepDebloater.ps1 with all of the parameters on Windows 10 x64 1803 Enterprise SKU en-us. It's leaving two apps behind at the end: Fresh Paint and Network Speed Test. I've run this on 5 separate machines with the same OS build and getting the same result. Otherwise, it seems to work fine.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.