| 
					
				 | 
			
			
				@@ -39,9 +39,15 @@ Function DebloatAll { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $WhitelistedApps = 'Microsoft.ScreenSketch|Microsoft.Paint3D|Microsoft.WindowsCalculator|Microsoft.WindowsStore|Microsoft.Windows.Photos|CanonicalGroupLimited.UbuntuonWindows|`
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     Microsoft.XboxGameCallableUI|Microsoft.XboxGamingOverlay|Microsoft.Xbox.TCUI|Microsoft.XboxGamingOverlay|Microsoft.XboxIdentityProvider|Microsoft.MicrosoftStickyNotes|Microsoft.MSPaint|Microsoft.WindowsCamera|.NET|Framework|`
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     Microsoft.HEIFImageExtension|Microsoft.ScreenSketch|Microsoft.StorePurchaseApp|Microsoft.VP9VideoExtensions|Microsoft.WebMediaExtensions|Microsoft.WebpImageExtension|Microsoft.DesktopAppInstaller|WindSynthBerry|MIDIBerry|Slack'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Get-AppxPackage -AllUsers | Where-Object {$_.Name -NotMatch $WhitelistedApps -and $_.NonRemovable -eq "False"} | Remove-AppxPackage
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Get-AppxPackage | Where-Object {$_.Name -NotMatch $WhitelistedApps -and $_.NonRemovable -eq "False"} | Remove-AppxPackage
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -NotMatch $WhitelistedApps -and $_.NonRemovable -eq "False"} | Remove-AppxProvisionedPackage -Online
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #NonRemovable Apps that where getting attempted and the system would reject the uninstall, speeds up debloat and prevents 'initalizing' overlay when removing apps
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $NonRemovable = '1527c705-839a-4832-9118-54d4Bd6a0c89|c5e2524a-ea46-4f67-841f-6a9465d9d515|E2A4F912-2574-4A75-9BB0-0D023378592B|F46D4000-FD22-4DB4-AC8E-4E1DDDE828FE|InputApp|Microsoft.AAD.BrokerPlugin|Microsoft.AccountsControl|`
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Microsoft.BioEnrollment|Microsoft.CredDialogHost|Microsoft.ECApp|Microsoft.LockApp|Microsoft.MicrosoftEdgeDevToolsClient|Microsoft.MicrosoftEdge|Microsoft.PPIProjection|Microsoft.Win32WebViewHost|Microsoft.Windows.Apprep.ChxApp|`
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Microsoft.Windows.AssignedAccessLockApp|Microsoft.Windows.CapturePicker|Microsoft.Windows.CloudExperienceHost|Microsoft.Windows.ContentDeliveryManager|Microsoft.Windows.Cortana|Microsoft.Windows.NarratorQuickStart|`
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Microsoft.Windows.ParentalControls|Microsoft.Windows.PeopleExperienceHost|Microsoft.Windows.PinningConfirmationDialog|Microsoft.Windows.SecHealthUI|Microsoft.Windows.SecureAssessmentBrowser|Microsoft.Windows.ShellExperienceHost|`
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Microsoft.Windows.XGpuEjectDialog|Microsoft.XboxGameCallableUI|Windows.CBSPreview|windows.immersivecontrolpanel|Windows.PrintDialog|Microsoft.VCLibs.140.00|Microsoft.Services.Store.Engagement|Microsoft.UI.Xaml.2.0'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Get-AppxPackage -AllUsers | Where {$_.Name -NotMatch $WhitelistedApps -and $_.Name -NotMatch $NonRemovable} | Remove-AppxPackage
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Get-AppxPackage | Where {$_.Name -NotMatch $WhitelistedApps -and $_.Name -NotMatch $NonRemovable} | Remove-AppxPackage
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Get-AppxProvisionedPackage -Online | Where {$_.Name -NotMatch $WhitelistedApps -and $_.Name -NotMatch $NonRemovable} | Remove-AppxProvisionedPackage -Online
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 Function DebloatBlacklist {
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -676,7 +682,7 @@ $Prompt1 = [Windows.MessageBox]::Show($Ask, "Debloat or Revert", $Button, $Error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 Switch ($Prompt1) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     #This will debloat Windows 10
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     Yes {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        #Everything is specific prompt
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $Prompt2 = [Windows.MessageBox]::Show($EverythingorSpecific, "Everything or Specific", $Button, $Warn)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         switch ($Prompt2) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Yes { 
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -751,7 +757,7 @@ Switch ($Prompt1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Start-Sleep 1
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        #Disabling EdgePDF prompt
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $Prompt3 = [Windows.MessageBox]::Show($EdgePdf, "Edge PDF", $Button, $Warn)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Switch ($Prompt3) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Yes {
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -773,7 +779,7 @@ Switch ($Prompt1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Write-Host "You have chosen to skip removing OneDrive from your machine."
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				#Prompt asking if you'd like to unpin all start items
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		#Prompt asking if you'd like to unpin all start items
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		$Prompt5 = [Windows.MessageBox]::Show($Unpin, "Unpin", $Button, $ErrorIco) 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Switch ($Prompt5) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Yes {
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -781,31 +787,31 @@ Switch ($Prompt1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				Write-Host "Start Apps unpined."
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             No {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				Write-Host "You have chosen to skip removing OneDrive from your machine."
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				Write-Host "Apps will remain pinned to the start menu."
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        #Prompt asking if you want to install .NET
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $Prompt6 = [Windows.MessageBox]::Show($InstallNET, "Install .Net", $Button, $Warn)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Switch ($Prompt6) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Yes {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Write-Host "Initializing the installation of .NET 3.5..."
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Try {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 DISM /Online /Enable-Feature /FeatureName:NetFx3 /All
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Write-Host ".NET 3.5 has been successfully installed!" }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Catch {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    $_
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Write-Host ".NET 3.5 has been successfully installed!"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            No {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Write-Host "Skipping .NET install."
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         #Prompt asking if you'd like to reboot your machine
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $Prompt7 = [Windows.MessageBox]::Show($Reboot, "Reboot", $Button, $Warn) 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $Prompt7 = [Windows.MessageBox]::Show($Reboot, "Reboot", $Button, $Warn)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Switch ($Prompt7) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Yes {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Write-Host "Unloading the HKCR drive..."
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Remove-PSDrive HKCR 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Start-Sleep 1
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Stop-Transcript
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Write-Host "Initiating reboot."
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Stop-Transcript
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Start-Sleep 2
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Restart-Computer
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -813,13 +819,15 @@ Switch ($Prompt1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Write-Host "Unloading the HKCR drive..."
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Remove-PSDrive HKCR 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Start-Sleep 1
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Stop-Transcript
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Write-Host "Script has finished. Exiting."
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Stop-Transcript
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Start-Sleep 2
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Exit
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     No {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Write-Host "Reverting changes..."
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Write-Host "Creating PSDrive 'HKCR' (HKEY_CLASSES_ROOT). This will be used for the duration of the script as it is necessary for the modification of specific registry keys."
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -859,4 +867,3 @@ Switch ($Prompt1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 |