Added support for running the script with arguments, this removes the need for any user input at runtime and makes it easies to run the script with custom settings. Also some major refactoring in Win10Debloat.ps1

This commit is contained in:
Raphire
2020-11-07 02:57:38 +01:00
parent 15f6a7fde3
commit e0dada9120
3 changed files with 233 additions and 84 deletions

View File

@@ -1,44 +1,21 @@
Write-Output "-------------------------------------------------------------------------------------------"
Write-Output "Win10Debloat Script - Setup"
Write-Output "-------------------------------------------------------------------------------------------"
Write-Output "(1) Run Win10Debloat with the default settings"
Write-Output "(2) Advanced: Choose which changes you want Win10Debloat to make"
Write-Output ""
Do { $script_mode = Read-Host "Please select an option (1/2)" }
while ($script_mode -ne '1' -and $script_mode -ne '2')
[CmdletBinding(SupportsShouldProcess)]
param
(
[Parameter(ValueFromPipeline=$true)][switch]$RunDefaults,
[Parameter(ValueFromPipeline=$true)][switch]$RemoveApps,
[Parameter(ValueFromPipeline=$true)][switch]$DisableOnedrive,
[Parameter(ValueFromPipeline=$true)][switch]$Disable3dObjects,
[Parameter(ValueFromPipeline=$true)][switch]$DisableMusic,
[Parameter(ValueFromPipeline=$true)][switch]$DisableBingSearches,
[Parameter(ValueFromPipeline=$true)][switch]$DisableLockscreenTips,
[Parameter(ValueFromPipeline=$true)][switch]$DisableWindowsSuggestions,
[Parameter(ValueFromPipeline=$true)][switch]$DisableIncludeInLibrary,
[Parameter(ValueFromPipeline=$true)][switch]$DisableGiveAccessTo,
[Parameter(ValueFromPipeline=$true)][switch]$DisableShare
)
if ($script_mode -eq '1'){
Clear
Write-Output "-------------------------------------------------------------------------------------------"
Write-Output "Win10Debloat Script - Default Configuration"
Write-Output "-------------------------------------------------------------------------------------------"
}
elseif ($script_mode -eq '2') {
Clear
Write-Output "-------------------------------------------------------------------------------------------"
Write-Output "Win10Debloat Script - Advanced Configuration"
Write-Output "-------------------------------------------------------------------------------------------"
$remove_apps = Read-Host "Remove the pre-installed windows 10 apps? (y/n)"
$disable_onedrive = Read-Host "Hide the onedrive folder in windows explorer? (y/n)"
$disable_3d_objects = Read-Host "Hide the 3D objects folder in windows explorer? (y/n)"
$disable_music = Read-Host "Hide the music folder in windows explorer? (y/n)"
$disable_bing_searches = Read-Host "Disable bing in windows search? (y/n)"
$disable_lockscreen_tips = Read-Host "Disable tips & tricks on the lockscreen? (y/n)"
$disable_windows_suggestions = Read-Host "Disable tips, tricks and suggestions in the startmenu and settings? (y/n)"
$disable_context = Read-Host "Disable the contextmenu entries for: Share, Give access to and Include in library? (y/n)"
Write-Output ""
}
if ($remove_apps -eq 'y' -or $script_mode -eq '1') {
function RemoveApps
{
Write-Output "> Removing pre-installed windows 10 apps..."
$apps = @(
@@ -100,55 +77,172 @@ if ($remove_apps -eq 'y' -or $script_mode -eq '1') {
)
foreach ($app in $apps) {
Write-Output " Attempting to remove $app"
Write-Output "Attempting to remove $app"
Get-AppxPackage -Name $app -AllUsers | Remove-AppxPackage
}
}
if ($disable_onedrive -eq 'y') {
Write-Output "> Hiding the onedrive folder in windows explorer..."
function RegImport
{
param
(
$Message,
$Path
)
regedit /s $PSScriptRoot\Regfiles\Hide_Onedrive_Folder.reg
Write-Output $Message
reg import $path
}
if((-NOT $PSBoundParameters.Count) -or $RunDefaults -or (($PSBoundParameters.Count -eq 1) -and ($PSBoundParameters.ContainsKey('WhatIf') -or $PSBoundParameters.ContainsKey('Confirm') -or $PSBoundParameters.ContainsKey('Verbose'))))
{
if($RunDefaults)
{
$Mode = '1';
}
else
{
Clear
Write-Output "-------------------------------------------------------------------------------------------"
Write-Output " Win10Debloat Script - Setup"
Write-Output "-------------------------------------------------------------------------------------------"
Write-Output "(1) Run Win10Debloat with the default settings"
Write-Output "(2) Advanced: Choose which changes you want Win10Debloat to make"
Write-Output ""
if ($disable_3d_objects -eq 'y' -or $script_mode -eq '1') {
Write-Output "> Hiding the 3D objects folder in windows explorer..."
Do { $Mode = Read-Host "Please select an option (1/2)" }
while ($Mode -ne '1' -and $Mode -ne '2')
}
regedit /s $PSScriptRoot\Regfiles\Hide_3D_Objects_Folder.reg
switch($Mode)
{
'1'
{
Clear
Write-Output "-------------------------------------------------------------------------------------------"
Write-Output " Win10Debloat Script - Default Configuration"
Write-Output "-------------------------------------------------------------------------------------------"
$PSBoundParameters.Add('RemoveApps', $RemoveApps)
$PSBoundParameters.Add('Disable3dObjects', $Disable3dObjects)
$PSBoundParameters.Add('DisableBingSearches', $DisableBingSearches)
$PSBoundParameters.Add('DisableLockscreenTips', $DisableLockscreenTips)
$PSBoundParameters.Add('DisableWindowsSuggestions', $DisableWindowsSuggestions)
$PSBoundParameters.Add('DisableIncludeInLibrary', $DisableIncludeInLibrary)
$PSBoundParameters.Add('DisableGiveAccessTo', $DisableGiveAccessTo)
$PSBoundParameters.Add('DisableShare', $DisableShare)
}
'2'
{
Clear
Write-Output "-------------------------------------------------------------------------------------------"
Write-Output " Win10Debloat Script - Advanced Configuration"
Write-Output "-------------------------------------------------------------------------------------------"
if($( Read-Host -Prompt "Remove the pre-installed windows 10 apps? (y/n)" ) -eq 'y')
{
$PSBoundParameters.Add('RemoveApps', $RemoveApps)
}
if($( Read-Host -Prompt "Hide the onedrive folder in windows explorer? (y/n)" ) -eq 'y')
{
$PSBoundParameters.Add('DisableOnedrive', $DisableOnedrive)
}
if($( Read-Host -Prompt "Hide the 3D objects folder in windows explorer? (y/n)" ) -eq 'y')
{
$PSBoundParameters.Add('Disable3dObjects', $Disable3dObjects)
}
if($( Read-Host -Prompt "Hide the music folder in windows explorer? (y/n)" ) -eq 'y')
{
$PSBoundParameters.Add('DisableMusic', $DisableMusic)
}
if($( Read-Host -Prompt "Disable bing in windows search? (y/n)" ) -eq 'y')
{
$PSBoundParameters.Add('DisableBingSearches', $DisableBingSearches)
}
if($( Read-Host -Prompt "Disable tips & tricks on the lockscreen? (y/n)" ) -eq 'y')
{
$PSBoundParameters.Add('DisableLockscreenTips', $DisableLockscreenTips)
}
if($( Read-Host -Prompt "Disable tips, tricks and suggestions in the startmenu and settings? (y/n)" ) -eq 'y')
{
$PSBoundParameters.Add('DisableWindowsSuggestions', $DisableWindowsSuggestions)
}
if($( Read-Host -Prompt "Disable the 'Include in library' option in the context menu? (y/n)" ) -eq 'y')
{
$PSBoundParameters.Add('DisableIncludeInLibrary', $DisableIncludeInLibrary)
}
if($( Read-Host -Prompt "Disable the 'Give access to' option in the context menu? (y/n)" ) -eq 'y')
{
$PSBoundParameters.Add('DisableGiveAccessTo', $DisableGiveAccessTo)
}
if($( Read-Host -Prompt "Disable the 'Share' option in the context menu? (y/n)" ) -eq 'y')
{
$PSBoundParameters.Add('DisableShare', $DisableShare)
}
Write-Output ""
}
}
}
else
{
Clear
Write-Output "-------------------------------------------------------------------------------------------"
Write-Output " Win10Debloat Script - Custom Configuration"
Write-Output "-------------------------------------------------------------------------------------------"
}
if ($disable_music -eq 'y') {
Write-Output "> Hiding the music folder in windows explorer..."
regedit /s $PSScriptRoot\Regfiles\Hide_Music_folder.reg
}
if ($disable_bing_searches -eq 'y' -or $script_mode -eq '1') {
Write-Output "> Disabling bing in windows search..."
regedit /s $PSScriptRoot\Regfiles\Disable_Bing_Searches.reg
}
if ($disable_lockscreen_tips -eq 'y' -or $script_mode -eq '1') {
Write-Output "> Disabling tips & tricks on the lockscreen..."
regedit /s $PSScriptRoot\Regfiles\Disable_Lockscreen_Tips.reg
}
if ($disable_windows_suggestions -eq 'y' -or $script_mode -eq '1') {
Write-Output "> Disabling tips, tricks and suggestions in the startmenu and settings..."
regedit /s $PSScriptRoot\Regfiles\Disable_Windows_Suggestions.reg
}
if ($disable_context -eq 'y' -or $script_mode -eq '1') {
Write-Output "> Disabling contextmenu entries for: Share, Include in library & Give access..."
regedit /s $PSScriptRoot\Regfiles\Disable_Share_from_context_menu.reg
regedit /s $PSScriptRoot\Regfiles\Disable_Include_in_library_from_context_menu.reg
regedit /s $PSScriptRoot\Regfiles\Disable_Give_access_to_context_menu.reg
switch ($PSBoundParameters.Keys)
{
'RemoveApps'
{
RemoveApps
}
'DisableOnedrive'
{
RegImport "> Hiding the onedrive folder in windows explorer..." $PSScriptRoot\Regfiles\Hide_Onedrive_Folder.reg
}
'Disable3dObjects'
{
RegImport "> Hiding the 3D objects folder in windows explorer..." $PSScriptRoot\Regfiles\Hide_3D_Objects_Folder.reg
}
'DisableMusic'
{
RegImport "> Hiding the music folder in windows explorer..." $PSScriptRoot\Regfiles\Hide_Music_folder.reg
}
'DisableBingSearches'
{
RegImport "> Disabling bing in windows search..." $PSScriptRoot\Regfiles\Disable_Bing_Searches.reg
}
'DisableLockscreenTips'
{
RegImport "> Disabling tips & tricks on the lockscreen..." $PSScriptRoot\Regfiles\Disable_Lockscreen_Tips.reg
}
'DisableWindowsSuggestions'
{
RegImport "> Disabling tips, tricks and suggestions in the startmenu and settings..." $PSScriptRoot\Regfiles\Disable_Windows_Suggestions.reg
}
'DisableIncludeInLibrary'
{
RegImport "> Disabling 'Include in library' in the context menu..." $PSScriptRoot\Regfiles\Disable_Include_in_library_from_context_menu.reg
}
'DisableGiveAccessTo'
{
RegImport "> Disabling 'Give access to' in the context menu..." $PSScriptRoot\Regfiles\Disable_Give_access_to_context_menu.reg
}
'DisableShare'
{
RegImport "> Disabling 'Share' in the context menu..." $PSScriptRoot\Regfiles\Disable_Share_from_context_menu.reg
}
}
Write-Output ""