From 876a63c3d3c99eef6e8832e5af1580a9acf997c1 Mon Sep 17 00:00:00 2001 From: dado Date: Sun, 12 Oct 2025 18:06:41 +0200 Subject: [PATCH] aggiunto controllo esistenza path. Se non esite, viene creato. RImosso apps doppie --- bloatware-apps.txt => bloatware.txt | 1 - configwinpc.ps1 | 374 ++++++++++++++++------------ 2 files changed, 221 insertions(+), 154 deletions(-) rename bloatware-apps.txt => bloatware.txt (99%) diff --git a/bloatware-apps.txt b/bloatware.txt similarity index 99% rename from bloatware-apps.txt rename to bloatware.txt index a48cc64..526c53c 100644 --- a/bloatware-apps.txt +++ b/bloatware.txt @@ -87,7 +87,6 @@ Microsoft Sticky Notes Microsoft Teams Microsoft To Do MSN Weather -MSN Weather Netflix News NYTCrossword diff --git a/configwinpc.ps1 b/configwinpc.ps1 index 29be490..8296c37 100644 --- a/configwinpc.ps1 +++ b/configwinpc.ps1 @@ -4,6 +4,9 @@ clear-Host +# TODO +# Optional Update, Delivery Optimization, Open With NP++ + # Open PowerShell as administrator if (-Not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { Start-Process powershell -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs @@ -13,18 +16,18 @@ if (-Not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdenti Write-Host "" Write-Host -ForegroundColor Yellow " - ###################################################### - # # - # # - # SCRIPT FOR CONFIGURING AND DEBLOATING WINDOWS 11 # - # # - # by dado # - ###################################################### +###################################################### +# # +# # +# SCRIPT FOR CONFIGURING AND DEBLOATING WINDOWS 11 # +# # +# by dado # +###################################################### " -# Sleep for 5 seconds -Start-Sleep -Seconds 5 +# Sleep for 2 seconds +Start-Sleep -Seconds 2 ########################################################################################## # # @@ -45,27 +48,40 @@ $RegistryPaths = @( "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer" ) +# Loop through each registry path to check if it exists +foreach ($path in $RegistryPaths) { + if (-not (Test-Path $path)) { + New-Item -Path $path -Force | Out-Null + } +} + # Set left align Write-Host -ForegroundColor DarkGray ">>> Set left align <<<" foreach ($path in $RegistryPaths[0..1]) { New-ItemProperty -Path $path -Name "TaskbarAl" -Value 0 -Type DWORD -Force | Out-Null } -# Hide search -Write-Host -ForegroundColor DarkGray ">>> Hide search <<<" -Set-ItemProperty -Path $RegistryPaths[2] -Name "SearchBoxTaskbarMode" -Value 0 -Type DWORD -Force | Out-Null - # Hide TaskView button Write-Host -ForegroundColor DarkGray ">>> Hide TaskView button <<<" foreach ($path in $RegistryPaths[0..1]) { Set-ItemProperty -Path $path -Name "ShowTaskViewButton" -Value 0 -Type DWORD -Force | Out-Null } +# Remove Chat from the Taskbar +Write-Host -ForegroundColor DarkGray ">>> Removes Chat from the Taskbar <<<" +foreach ($path in $RegistryPaths[0..1]) { + New-ItemProperty -Path $path -Name "TaskbarMn" -Value 0 -Type DWORD -Force | Out-Null +} + # Disable widgets in the taskbar Write-Host -ForegroundColor DarkGray ">>> Disable widgets in the taskbar <<<" Set-ItemProperty -Path $RegistryPaths[0] -Name "TaskbarWidgetsEnabled" -Value 0 | Out-Null Set-ItemProperty -Path $RegistryPaths[1] -Name "TaskbarWidgetsEnabled" -Value 0 | Out-Null +# Hide search +Write-Host -ForegroundColor DarkGray ">>> Hide search <<<" +Set-ItemProperty -Path $RegistryPaths[2] -Name "SearchBoxTaskbarMode" -Value 0 -Type DWORD -Force | Out-Null + # Disable the 'Windows + W' keyboard shortcut to open widgets Write-Host -ForegroundColor DarkGray ">>> Disable the 'Windows + W' keyboard shortcut to open widgets <<<" Set-ItemProperty -Path $RegistryPaths[3] -Name "ShowWindowsW" -Value 0 | Out-Null @@ -73,40 +89,37 @@ Set-ItemProperty -Path $RegistryPaths[4] -Name "ShowWindowsW" -Value 0 | Out-Nul # Disable the widget service Write-Host -ForegroundColor DarkGray ">>> Disable widget service <<<" -$widgetPath1 = "HKLM:\SOFTWARE\Microsoft\PolicyManager\default\NewsAndInterests" -$widgetPath2 = "HKLM:\SOFTWARE\Policies\Microsoft\Dsh" -# Create the path if it doesn't exist -if (-not (Test-Path $widgetPath1)) { - New-Item -Path $widgetPath1 -Force | Out-Null -} -if (-not (Test-Path $widgetPath2)) { - New-Item -Path $widgetPath2 -Force | Out-Null +$widgetPaths = @( + "HKLM:\SOFTWARE\Microsoft\PolicyManager\default\NewsAndInterests", + "HKLM:\SOFTWARE\Policies\Microsoft\Dsh" +) + +foreach ($path in $widgetPaths) { + if (-not (Test-Path $path)) { + New-Item -Path $path -Force | Out-Null + } + Set-ItemProperty -Path $path -Name "AllowNewsAndInterests" -Value 0 -Type DWORD -Force | Out-Null } -# Set the registry key -Set-ItemProperty -Path $widgetPath1 -Name "AllowNewsAndInterests" -Value 0 -Type DWORD -Force | Out-Null -New-ItemProperty -Path $widgetPath2 -Name "AllowNewsAndInterests" -Value 0 -Type DWORD -Force | Out-Null +#################################################################################################################################### # Enable End Task Write-Host -ForegroundColor DarkGray ">>> Enable End Task <<<" + $endTaskPath = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" +# Create the path if it doesn't exist +if (-not (Test-Path $endTaskPath)) { + New-Item -Path $endTaskPath -Force | Out-Null +} + Set-ItemProperty -Path $endTaskPath -Name "TaskbarEndTask" -Value 1 -Type DWORD -Force | Out-Null -# Remove Chat from the Taskbar -Write-Host -ForegroundColor DarkGray ">>> Removes Chat from the Taskbar <<<" -foreach ($path in $RegistryPaths[0..1]) { - New-ItemProperty -Path $path -Name "TaskbarMn" -Value 0 -PropertyType DWORD -Force | Out-Null -} +#################################################################################################################################### # Disabling 'Recommended' section Write-Host -ForegroundColor DarkGray ">>> Hide 'Recommended' section <<<" -foreach ($path in $RegistryPaths) { - New-ItemProperty -Path $path -Name "Start_IrisRecommendations" -Value 0 -Type DWORD -Force | Out-Null - New-ItemProperty -Path $path -Name "Start_TrackDocs" -Value 0 -Type DWORD -Force | Out-Null - New-ItemProperty -Path $path -Name "Start_Layout" -Value 1 -Type DWORD -Force | Out-Null -} $explorerPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Explorer" $startPath = "HKLM:\SOFTWARE\Microsoft\PolicyManager\current\device\Start" @@ -116,24 +129,27 @@ $educationPath = "HKLM:\SOFTWARE\Microsoft\PolicyManager\current\device\Educatio if (-not (Test-Path $explorerPath)) { New-Item -Path $explorerPath -Force | Out-Null } -# Set the registry value to hide the Recommended Section in Explorer + Set-ItemProperty -Path $explorerPath -Name "HideRecommendedSection" -Value 1 -Type DWORD -Force | Out-Null # Create the Start path if it doesn't exist if (-not (Test-Path $startPath)) { New-Item -Path $startPath -Force | Out-Null } -# Set the registry value to hide the Recommended Section in Start + Set-ItemProperty -Path $startPath -Name "HideRecommendedSection" -Value 1 -Type DWORD -Force | Out-Null # Create the Education path if it doesn't exist if (-not (Test-Path $educationPath)) { New-Item -Path $educationPath -Force | Out-Null } -# Set the registry value for Education Environment + Set-ItemProperty -Path $educationPath -Name "IsEducationEnvironment" -Value 1 -Type DWORD -Force | Out-Null + Write-Host "" +#################################################################################################################################### + # Turn off web results in the Start menu Write-Host -ForegroundColor Yellow ">>> Turn off web results in the Start menu <<<" @@ -156,10 +172,9 @@ foreach ($RegistryPath in $RegistryPaths) { New-Item -Path $RegistryPath -Force | Out-Null } - # Set the values based on the hashtable foreach ($Name in $Properties.Keys) { $Value = $Properties[$Name] - New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value -PropertyType DWORD -Force | Out-Null + New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value -Type DWORD -Force | Out-Null } } @@ -190,50 +205,55 @@ $ExplorerProperties = @{ "HideFileExt" = 0 } -# Iterate over each registry path foreach ($RegistryPath in $RegistryPaths) { - # Create the key if it does not exist If (-NOT (Test-Path $RegistryPath)) { New-Item -Path $RegistryPath -Force | Out-Null } - # Set the values based on the hashtable foreach ($Name in $ExplorerProperties.Keys) { $Value = $ExplorerProperties[$Name] - New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value -PropertyType DWORD -Force | Out-Null + New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value -Type DWORD -Force | Out-Null } } +#################################################################################################################################### + # Disable Group By Folder in Windows Explorer Write-Host -ForegroundColor DarkGray ">>> Disabling Group By Folder feature <<<" -# Registry path for disabling automatic grouping + $groupByPath = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" + # Create the path if it doesn't exist if (-not (Test-Path $groupByPath)) { New-Item -Path $groupByPath -Force | Out-Null } + # Set the registry value to disable auto grouping Set-ItemProperty -Path $groupByPath -Name "UseAutoGrouping" -Value 0 -Type DWORD -Force | Out-Null +#################################################################################################################################### + # Enable Dark Mode in Windows Write-Host -ForegroundColor DarkGray ">>> Enable Dark Mode <<<" -# Registry path for dark mode $darkModePath = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize" + # Create the path if it doesn't exist if (-not (Test-Path $darkModePath)) { New-Item -Path $darkModePath -Force | Out-Null } + # Set the registry values to enable dark mode Set-ItemProperty -Path $darkModePath -Name "AppsUseLightTheme" -Value 0 -Type DWORD -Force | Out-Null Set-ItemProperty -Path $darkModePath -Name "SystemUsesLightTheme" -Value 0 -Type DWORD -Force | Out-Null +Write-Host "" + ########################################################################################## # # # Spotlight # # # ########################################################################################## -Write-Host "" Write-Host -ForegroundColor Yellow ">>> Disable Spotlight <<<" Write-Host "" @@ -245,12 +265,26 @@ $RegistryPaths = @( "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" ) +# Define properties for lockscreen +$LockScreenProperties = @{ + "RotatingLockScreenOverlayEnabled" = 0 + "RotatingLockScreenEnabled" = 0 +} + +# Define properties for background +$BackgroundProperties = @{ + "DisableSpotlightCollectionOnDesktop" = 1 + "DisableWindowsSpotlightFeatures" = 1 +} + # Disable Windows Spotlight on lockscreen Write-Host -ForegroundColor DarkGray ">>> Disabling Windows Spotlight on lockscreen <<<" foreach ($spotlight in $RegistryPaths[0..1]) { If (Test-Path $spotlight) { - Set-ItemProperty -Path $spotlight -Name "RotatingLockScreenOverlayEnabled" -Value 0 -Force | Out-Null - Set-ItemProperty -Path $spotlight -Name "RotatingLockScreenEnabled" -Value 0 -Force | Out-Null + foreach ($Name in $LockScreenProperties.Keys) { + $Value = $LockScreenProperties[$Name] + Set-ItemProperty -Path $spotlight -Name $Name -Value $Value -Force | Out-Null + } } } @@ -258,11 +292,15 @@ foreach ($spotlight in $RegistryPaths[0..1]) { Write-Host -ForegroundColor DarkGray ">>> Disabling Windows Spotlight on background <<<" foreach ($spotlight in $RegistryPaths[2..3]) { If (Test-Path $spotlight) { - Set-ItemProperty -Path $spotlight -Name "DisableSpotlightCollectionOnDesktop" -Value 1 -Force | Out-Null - Set-ItemProperty -Path $spotlight -Name "DisableWindowsSpotlightFeatures" -Value 1 -Force | Out-Null + foreach ($Name in $BackgroundProperties.Keys) { + $Value = $BackgroundProperties[$Name] + Set-ItemProperty -Path $spotlight -Name $Name -Value $Value -Force | Out-Null + } } } +Write-Host "" + ########################################################################################## # # # Telemetry # @@ -270,35 +308,56 @@ foreach ($spotlight in $RegistryPaths[2..3]) { ########################################################################################## # Configure Windows telemetry and activity tracking settings -Write-Host -ForegroundColor DarkGray ">>> Configuring telemetry and activity settings <<<" +Write-Host -ForegroundColor Yellow ">>> Disable some telemetry <<<" -# Define registry paths and values to modify -$registryEntries = @( - @{ Path = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection"; Name = "AllowTelemetry"; Value = 0 }, - @{ Path = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced"; Name = "Start_TrackProgs"; Value = 0 }, - @{ Path = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System"; Name = "PublishUserActivities"; Value = 0 }, - @{ Path = "HKCU:\SOFTWARE\Microsoft\Siuf\Rules"; Name = "NumberOfSIUFInPeriod"; Value = 0 }, - @{ Path = "HKCU:\SOFTWARE\Microsoft\Siuf\Rules"; Name = "PeriodInNanoSeconds"; Value = -1 } +$registryPaths = @( + "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection", + "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced", + "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System", + "HKCU:\SOFTWARE\Microsoft\Siuf\Rules" ) -# Loop through each registry entry and set the values -foreach ($entry in $registryEntries) { - # Create the path if it doesn't exist - if (-not (Test-Path $entry.Path)) { - New-Item -Path $entry.Path -Force | Out-Null - } - - # Set the registry value - Set-ItemProperty -Path $entry.Path -Name $entry.Name -Value $entry.Value -Type DWORD -Force | Out-Null +$TelemetryProperties = @{ + "AllowTelemetry" = 0 + "PublishUserActivities" = 0 } +$ActivityTrackingProperties = @{ + "Start_TrackProgs" = 0 + "NumberOfSIUFInPeriod" = 0 + "PeriodInNanoSeconds" = -1 +} + +# Disable telemetry settings +foreach ($path in $registryPaths[0..1]) { + if (-not (Test-Path $path)) { + New-Item -Path $path -Force | Out-Null + } + foreach ($Name in $TelemetryProperties.Keys) { + $Value = $TelemetryProperties[$Name] + Set-ItemProperty -Path $path -Name $Name -Value $Value -Type DWORD -Force | Out-Null + } +} + +# Disable activity tracking settings +foreach ($path in $registryPaths[2..3]) { + if (-not (Test-Path $path)) { + New-Item -Path $path -Force | Out-Null + } + foreach ($Name in $ActivityTrackingProperties.Keys) { + $Value = $ActivityTrackingProperties[$Name] + Set-ItemProperty -Path $path -Name $Name -Value $Value -Type DWORD -Force | Out-Null + } +} + +Write-Host "" + ########################################################################################## # # # Lock Screen Notifications # # # ########################################################################################## -Write-Host "" Write-Host -ForegroundColor Yellow ">>> Disable Notifications on Lock Screen <<<" # Set the registry paths for notifications settings @@ -315,17 +374,14 @@ $NotificationProperties = @{ "LockScreenToastEnabled" = 0 } -# Iterate over each registry path foreach ($RegistryPath in $RegistryPaths) { - # Create the key if it does not exist If (-NOT (Test-Path $RegistryPath)) { New-Item -Path $RegistryPath -Force | Out-Null } - # Set the values based on the hashtable foreach ($Name in $NotificationProperties.Keys) { $Value = $NotificationProperties[$Name] - New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value -PropertyType DWORD -Force | Out-Null + New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value -Type DWORD -Force | Out-Null } } @@ -337,9 +393,8 @@ Write-Host "" # # ########################################################################################## -Write-Host -ForegroundColor Yellow ">>> Change Control Panel View <<<" +Write-Host -ForegroundColor Yellow ">>> Change Control Panel View to 'Small icon'<<<" -# Set the registry paths for both HKLM and HKCU $RegistryPaths = @( "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel", "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel" @@ -351,17 +406,14 @@ $ControlPanelProperties = @{ "StartupPage" = 1 } -# Iterate over each registry path foreach ($RegistryPath in $RegistryPaths) { - # Create the key if it does not exist If (-NOT (Test-Path $RegistryPath)) { New-Item -Path $RegistryPath -Force | Out-Null } - # Set the values based on the hashtable foreach ($Name in $ControlPanelProperties.Keys) { $Value = $ControlPanelProperties[$Name] - New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value -PropertyType DWORD -Force | Out-Null + New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value -Type DWORD -Force | Out-Null } } @@ -373,10 +425,8 @@ Write-Host "" # # ########################################################################################## -Write-Host -ForegroundColor Yellow ">>> Turn off Windows Welcome Experience <<<" - # Disable Windows notifications, suggestions, and ads -Write-Host -ForegroundColor DarkGray ">>> Turn off Welcome Experience, notifications, suggestions, and ads in Windows <<<" +Write-Host -ForegroundColor Yellow ">>> Turn off Welcome Experience, notifications, suggestions, and ads in Windows <<<" # Define registry paths and values to modify $registryEntries = @( @@ -404,11 +454,12 @@ foreach ($entry in $registryEntries) { if (-not (Test-Path $entry.Path)) { New-Item -Path $entry.Path -Force | Out-Null } - - # Set the registry value + Set-ItemProperty -Path $entry.Path -Name $entry.Name -Value $entry.Value -Type DWORD -Force | Out-Null } +Write-Host "" + ########################################################################################## # # # Edge # @@ -456,15 +507,13 @@ $EdgeProperties = @{ # Iterate over each registry path foreach ($RegistryPath in $RegistryPaths) { - # Create the key if it does not exist If (-NOT (Test-Path $RegistryPath)) { New-Item -Path $RegistryPath -Force | Out-Null } - # Set the values based on the hashtable foreach ($Name in $EdgeProperties.Keys) { $Value = $EdgeProperties[$Name] - New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value -PropertyType DWORD -Force | Out-Null + New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value -Type DWORD -Force | Out-Null } } @@ -476,27 +525,36 @@ Write-Host "" # # ########################################################################################## -#Write-Host -ForegroundColor Yellow ">>> Disable Recall <<<" -# -## Define registry paths for taskbar settings -#$RegistryPaths = @( -# "HKCU:\SOFTWARE\Policies\Microsoft\Windows\WindowsAI", -# "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsAI" -#) -# -## Disable AI data analysis -#Write-Host -ForegroundColor DarkGray ">>> Disable AI data analysis <<<" -#foreach ($path in $RegistryPaths[0..1]) { -# New-ItemProperty -Path $path -Name "DisableAIDataAnalysis" -Value 1 -Type DWORD -Force | Out-Null -#} -# -#Set-ItemProperty -Path $RegistryPaths[1] -Name "AllowRecallEnablement" -Value 0 -Type DWORD -Force | Out-Null -# -## Turn off Recall snapshots -#Write-Host -ForegroundColor DarkGray ">>> Turn off Recall snapshots <<<" -#Set-ItemProperty -Path $RegistryPaths[1] -Name "TurnOffSavingSnapshots" -Value 1 -Type DWORD -Force | Out-Null -# -#Write-Host "" +Write-Host -ForegroundColor Yellow ">>> Disable Recall <<<" +Write-Host "" + +# Define registry paths for taskbar settings +$RegistryPaths = @( + "HKCU:\SOFTWARE\Policies\Microsoft\Windows\WindowsAI", + "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsAI" +) + +# Loop through each registry path to check if it exists +foreach ($path in $RegistryPaths) { + # Check if the path does not exist + if (-not (Test-Path $path)) { + New-Item -Path $path -Force | Out-Null # Create the registry path + } +} + +# Disable AI data analysis +Write-Host -ForegroundColor DarkGray ">>> Disable AI data analysis <<<" +foreach ($path in $RegistryPaths[0..1]) { + New-ItemProperty -Path $path -Name "DisableAIDataAnalysis" -Value 1 -Type DWORD -Force | Out-Null +} + +Set-ItemProperty -Path $RegistryPaths[1] -Name "AllowRecallEnablement" -Value 0 -Type DWORD -Force | Out-Null + +# Turn off Recall snapshots +Write-Host -ForegroundColor DarkGray ">>> Turn off Recall snapshots <<<" +Set-ItemProperty -Path $RegistryPaths[1] -Name "TurnOffSavingSnapshots" -Value 1 -Type DWORD -Force | Out-Null + +Write-Host "" ########################################################################################## # # @@ -506,11 +564,15 @@ Write-Host "" Write-Host -ForegroundColor Yellow ">>> Power Plan <<<" Write-Host "" + Write-Host -ForegroundColor DarkGray ">>> Activate High performance power plan <<<" powercfg -setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c -# create ultimate powerscheme +# Create ultimate powerscheme powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61 | Out-Null +#################################################################################################################################### + +Write-Host -ForegroundColor DarkGray ">>> Setting the monitor timeout to 10 minutes <<<" # AC power powercfg -change -monitor-timeout-ac 10 powercfg -change -standby-timeout-ac 10 @@ -523,6 +585,8 @@ powercfg -change -hibernate-timeout-dc 0 powercfg -change -disk-timeout-dc 0 powercfg /hibernate off +#################################################################################################################################### + # Set the power button behavior for AC power to "Shut down" Write-Host -ForegroundColor DarkGray ">>> Setting the power button behavior to 'Shut down' <<<" powercfg -setacvalueindex SCHEME_CURRENT SUB_BUTTONS PBUTTONACTION 3 @@ -533,14 +597,26 @@ Write-Host -ForegroundColor DarkGray ">>> Setting the sleep button behavior to ' powercfg /SETACVALUEINDEX SCHEME_CURRENT SUB_BUTTONS SBUTTONACTION 0 powercfg /SETDCVALUEINDEX SCHEME_CURRENT SUB_BUTTONS SBUTTONACTION 0 +#################################################################################################################################### + # Disable Fast Startup Write-Host -ForegroundColor DarkGray ">>> Disable fast startup <<<" -Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Power" -Name "HiberbootEnabled" -Value "0" -Force | Out-Null +$RegistryPaths = "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Power" +# Check if the path exists +if (-not (Test-Path $RegistryPaths)) { + # Create the path if it doesn't exist + New-Item -Path $RegistryPaths -Force | Out-Null +} + +Set-ItemProperty -Path $RegistryPaths -Name "HiberbootEnabled" -Value 0 -Force | Out-Null + +#################################################################################################################################### Write-Host -ForegroundColor DarkGray ">>> Disable Energy-Efficient Ethernet <<<" $adapter = Get-NetAdapter | Where-Object { $_.Name -eq "Ethernet" } Disable-NetAdapterPowerManagement -Name $adapter.Name -NoRestart Set-ItemProperty -Path ("HKLM:\SYSTEM\CurrentControlSet\Control\Class\{0}\{1}" -f "{4D36E972-E325-11CE-BFC1-08002BE10318}", $idNIC) -Name "PnPCapabilities" -Value "24" -Type DWORD -Force | Out-Null + Write-Host "" ########################################################################################## @@ -550,8 +626,8 @@ Write-Host "" ########################################################################################## Write-Host -ForegroundColor Yellow ">>> Windows Update settings <<<" - Write-Host "" + Write-Host -ForegroundColor DarkGray ">>> Enable 'Get updates for other Microsoft products' <<<" try { @@ -560,7 +636,7 @@ try { $UpdateServiceManager.AddService2($ServiceID, 7, "") | Out-Null } catch { - Write-Error "An error occurred while configuring Microsoft Update: $($_.Exception.Message)" + Write-Error -ForegroundColor Red "An error occurred while configuring Microsoft Update: $($_.Exception.Message)" } #################################################################################################################################### @@ -568,22 +644,19 @@ catch { # Set "Do not restart if user is logged on" Write-Host -ForegroundColor DarkGray ">>> Set 'Do not restart if user is logged on' <<<" -# Define the value to disable automatic reboots when a user is logged on -$NoAutoRebootWithLoggedOnUsers = 1 $WindowsUpdateRegistryPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" -# Check if the registry key exists, otherwise create it if (!(Test-Path $WindowsUpdateRegistryPath)) { New-Item -Path $WindowsUpdateRegistryPath -Force | Out-Null } -# Set the NoAutoRebootWithLoggedOnUsers value -Set-ItemProperty -Path $WindowsUpdateRegistryPath -Name "NoAutoRebootWithLoggedOnUsers" -Value $NoAutoRebootWithLoggedOnUsers -Type DWORD | Out-Null +Set-ItemProperty -Path $WindowsUpdateRegistryPath -Name "NoAutoRebootWithLoggedOnUsers" -Value 1 -Type DWORD | Out-Null #################################################################################################################################### # Restart File Explorer to apply the changes taskkill /f /im explorer.exe | Out-Null + start explorer.exe | Out-Null ########################################################################################## @@ -595,17 +668,14 @@ start explorer.exe | Out-Null # Checking for Available Updates Install-Module -Name PSWindowsUpdate -Force -Confirm:$False Write-Host "" + Write-Host -ForegroundColor Yellow ">>> Checking for Available Updates... <<<" Get-WindowsUpdate Write-Host "" # Installing Windows Updates Write-Host -ForegroundColor Yellow ">>> Installing Windows Updates... <<<" -Install-WindowsUpdate -AcceptAll -Verbose -NoReboot - -# Monitoring Update Installation -# Write-Host "" -# Get-WindowsUpdateLog +Install-WindowsUpdate -AcceptAll -Install -IgnoreReboot Write-Host "" ########################################################################################## @@ -620,47 +690,45 @@ Write-Host "" # Get the directory of the currently executing script $scriptDirectory = Split-Path -Parent $MyInvocation.MyCommand.Path -# bloatware-apps.txt path -$appsToRemove = Get-Content (Join-Path $scriptDirectory "bloatware-apps.txt") +# bloatware.txt path +$appsToRemove = Get-Content (Join-Path $scriptDirectory "bloatware.txt") # Remove the specified apps from the list foreach ($app in $appsToRemove) { try { - winget uninstall --name $app -h | Out-Null + winget uninstall --name $app | Out-Null # Check if the app was removed successfully if ($LASTEXITCODE -eq 0) { Write-Host "Removed: $app" } + else { + Write-Host "Not found: $app" + } } catch { - Write-Host "Error removing: $app. Details: $_" + Write-Host -ForegroundColor Red "Error removing: $app. Details: $_" } } +#################################################################################################################################### # Disable Microsoft 365 Ads in Settings Home Write-Host -ForegroundColor DarkGray ">>> Disabling Microsoft 365 Ads <<<" -# Registry path for disabling ads -$adsPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" + +$RegistryPaths = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" # Create the path if it doesn't exist -if (-not (Test-Path $adsPath)) { - New-Item -Path $adsPath -Force | Out-Null +if (-not (Test-Path $RegistryPaths)) { + New-Item -Path $RegistryPaths -Force | Out-Null } # Set the registry value to disable ads -Set-ItemProperty -Path $adsPath -Name "DisableConsumerAccountStateContent" -Value 1 -Type DWORD -Force | Out-Null +Set-ItemProperty -Path $RegistryPaths -Name "DisableConsumerAccountStateContent" -Value 1 -Type DWORD -Force | Out-Null + +#################################################################################################################################### # Uninstall Microsoft Office Write-Host "" Write-Host -ForegroundColor Yellow ">>> Uninstallation of Microsoft Office <<<" Start-Process "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" "https://aka.ms/SaRA-officeUninstallFromPC" -# >>>>>> https://pureinfotech.com/windows-11-policy-remove-bloatware/ <<<<<< -#Write-Host -ForegroundColor Yellow ">>> From Windows 24H2, enable the policy " -#Write-Host "" -#Write-Host -ForegroundColor Magenta "Computer Configuration > Administrative Templates > Windows Components > App Package Deployment > 'Remove Default Microsoft Store packages from the system' " -#Write-Host "" -#Write-Host -ForegroundColor Yellow "to prevent bloatware from being installed for every user... <<<" -#Write-Host "" - ########################################################################################## # # # SOFTWARE # @@ -677,26 +745,26 @@ Write-Host "" Write-Host -ForegroundColor Yellow ">>> Install default SOFTWARE... <<<" Write-Host "" -winget install --disable-interactivity Microsoft.PowerShell SumatraPDF.SumatraPDF Oracle.JavaRuntimeEnvironment 7zip.7zip Microsoft.VCRedist.2010.x64 Mozilla.Firefox Notepad++.Notepad++ Flameshot.Flameshot --source winget +winget install --disable-interactivity SumatraPDF.SumatraPDF 7zip.7zip Mozilla.Firefox Notepad++.Notepad++ Flameshot.Flameshot --source winget -# NodirTemirkhodjaev.FortFirewall voidtools.Everything Flow-Launcher.Flow-Launcher AutoHotkey.AutoHotkey +# Microsoft.PowerShell NodirTemirkhodjaev.FortFirewall voidtools.Everything Flow-Launcher.Flow-Launcher AutoHotkey.AutoHotkey Oracle.JavaRuntimeEnvironment Microsoft.VCRedist.2010.x64 -Write-Host -ForegroundColor DarkGray ">>> Copy 'Supremo' to Public Desktop <<<" -# Get the directory where the script is located -$scriptDirectory = Split-Path -Parent $MyInvocation.MyCommand.Path -# Define the path to the supremo executable -$supremo_path = Join-Path $scriptDirectory "supremo.exe" +#################################################################################################################################### + +#Write-Host -ForegroundColor DarkGray ">>> Copy 'Supremo' to Public Desktop <<<" +## Get the directory where the script is located +#$scriptDirectory = Split-Path -Parent $MyInvocation.MyCommand.Path +## Define the path to the supremo executable +#$supremo_path = Join-Path $scriptDirectory "supremo.exe" +# +#If (Test-Path $supremo_path ) { +# Copy-Item -Path "$supremo_path" -Destination "C:\Users\Public\Desktop\supremo.exe" +#} else { +# Write-Host -ForegroundColor Red "Error: File '$supremo_path' does not exist." +#} -If (Test-Path $supremo_path ) { - Copy-Item -Path "$supremo_path" -Destination "C:\Users\Public\Desktop\supremo.exe" -} else { - Write-Host -ForegroundColor Red "Error: File '$supremo_path' does not exist." -} Write-Host "" -# Sleep for 30 seconds -Start-Sleep -Seconds 30 - ########################################################################################## # # # End #