scripts/Windows/disable_windows_background_services.ps1
# Local Group Policies Write-Host "Modifying Local Group Policies" New-Item -Path 'HKLM:\Software\Policies\Microsoft\Windows\DataCollection' -Force | Out-Null Set-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\Windows\DataCollection' -Name AllowTelemetry -Value 0 New-Item -Path 'HKLM:\Software\Policies\Microsoft\FindMyDevice' -Force | Out-Null Set-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\FindMyDevice' -Name AllowFindMyDevice -Value 0 New-Item -Path 'HKLM:\Software\Policies\Microsoft\Windows\Windows Search' -Force | Out-Null Set-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\Windows\Windows Search' -Name AllowCortana -Value 0 New-Item -Path 'HKLM:\Software\Policies\Microsoft\Windows Defender' -Force | Out-Null Set-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\Windows Defender' -Name DisableAntiSpyware -Value 1 Set-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\Windows Defender' -Name ServiceKeepAlive -Value 0 New-Item -Path 'HKLM:\Software\Policies\Microsoft\MicrosoftEdge\PhishingFilter' -Force | Out-Null Set-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\MicrosoftEdge\PhishingFilter' -Name EnabledV9 -Value 0 New-Item -Path 'HKLM:\Software\Policies\Microsoft\Windows\System' -Force | Out-Null Set-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\Windows\System' -Name EnableSmartScreen -Value 0 New-Item -Path 'HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate\AU' -Force | Out-Null Set-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate\AU' -Name NoAutoUpdate -Value 1 # Disable scheduled tasks Write-Host "Disabling scheduled tasks" Get-ScheduledTask -TaskPath '\Microsoft\VisualStudio\*' | Disable-ScheduledTask -ErrorAction SilentlyContinue | ForEach-Object { $_.URI } Get-ScheduledTask -TaskPath '\Microsoft\Windows\Application Experience\*' | Disable-ScheduledTask -ErrorAction SilentlyContinue | ForEach-Object { $_.URI } Get-ScheduledTask -TaskPath '\Microsoft\Windows\Customer Experience Improvement Program\*' | Disable-ScheduledTask -ErrorAction SilentlyContinue | ForEach-Object { $_.URI } Get-ScheduledTask -TaskPath '\Microsoft\Windows\.NET Framework\*' | Disable-ScheduledTask -ErrorAction SilentlyContinue | ForEach-Object { $_.URI } Get-ScheduledTask -TaskPath '\Microsoft\Windows\Chkdsk\*' | Disable-ScheduledTask -ErrorAction SilentlyContinue | ForEach-Object { $_.URI } Get-ScheduledTask -TaskPath '\Microsoft\Windows\Data Integrity Scan\*' | Disable-ScheduledTask -ErrorAction SilentlyContinue | ForEach-Object { $_.URI } Get-ScheduledTask -TaskPath '\Microsoft\Windows\Defrag\*' | Disable-ScheduledTask -ErrorAction SilentlyContinue | ForEach-Object { $_.URI } Get-ScheduledTask -TaskPath '\Microsoft\Windows\Diagnosis\*' | Disable-ScheduledTask -ErrorAction SilentlyContinue | ForEach-Object { $_.URI } Get-ScheduledTask -TaskPath '\Microsoft\Windows\DiskCleanup\*' | Disable-ScheduledTask -ErrorAction SilentlyContinue | ForEach-Object { $_.URI } Get-ScheduledTask -TaskPath '\Microsoft\Windows\DiskDiagnostic\*' | Disable-ScheduledTask -ErrorAction SilentlyContinue | ForEach-Object { $_.URI } Get-ScheduledTask -TaskPath '\Microsoft\Windows\DiskFootprint\*' | Disable-ScheduledTask -ErrorAction SilentlyContinue | ForEach-Object { $_.URI } Get-ScheduledTask -TaskPath '\Microsoft\Windows\Maintenance\*' | Disable-ScheduledTask -ErrorAction SilentlyContinue | ForEach-Object { $_.URI } Get-ScheduledTask -TaskPath '\Microsoft\Windows\Power Efficiency Diagnostics\*' | Disable-ScheduledTask -ErrorAction SilentlyContinue | ForEach-Object { $_.URI } Get-ScheduledTask -TaskPath '\Microsoft\Windows\Server Manager\*' | Disable-ScheduledTask -ErrorAction SilentlyContinue | ForEach-Object { $_.URI } Get-ScheduledTask -TaskPath '\Microsoft\Windows\Servicing\*' | Disable-ScheduledTask -ErrorAction SilentlyContinue | ForEach-Object { $_.URI } Get-ScheduledTask -TaskPath '\Microsoft\Windows\Speech\*' | Disable-ScheduledTask -ErrorAction SilentlyContinue | ForEach-Object { $_.URI } Get-ScheduledTask -TaskPath '\Microsoft\Windows\Windows Error Reporting\*' | Disable-ScheduledTask -ErrorAction SilentlyContinue | ForEach-Object { $_.URI } Get-ScheduledTask -TaskPath '\Microsoft\Windows\WindowsColorSystem\*' | Disable-ScheduledTask -ErrorAction SilentlyContinue | ForEach-Object { $_.URI } Get-ScheduledTask -TaskPath '\Microsoft\Windows\WindowsUpdate\*' | Disable-ScheduledTask -ErrorAction SilentlyContinue | ForEach-Object { $_.URI } # Windows services Write-Host "Disable unnecessary Windows services" Set-Service diagtrack -StartupType Disabled -ErrorAction SilentlyContinue Set-Service vmicvss -StartupType Disabled -ErrorAction SilentlyContinue Set-Service VSS -StartupType Disabled -ErrorAction SilentlyContinue Set-Service wuauserv -StartupType Disabled -ErrorAction SilentlyContinue Set-Service winrm -StartupType Disabled -ErrorAction SilentlyContinue Set-Service UsoSvc -StartupType Disabled -ErrorAction SilentlyContinue Set-Service DPS -StartupType Disabled -ErrorAction SilentlyContinue Set-Service spooler -StartupType Disabled -ErrorAction SilentlyContinue Set-Service IpOverUsbSvc -StartupType Disabled -ErrorAction SilentlyContinue Set-Service gupdate -StartupType Disabled -ErrorAction SilentlyContinue Set-Service gupdatem -StartupType Disabled -ErrorAction SilentlyContinue Set-Service SQLWriter -StartupType Manual -ErrorAction SilentlyContinue Set-Service 'Bonjour Service' -StartupType Disabled -ErrorAction SilentlyContinue Set-Service PcaSvc -StartupType Disabled -ErrorAction SilentlyContinue Set-Service GoogleVssProvider -StartupType Disabled -ErrorAction SilentlyContinue Set-Service GoogleVssAgent -StartupType Disabled -ErrorAction SilentlyContinue |