Skip to content

Instantly share code, notes, and snippets.

@twobob
Last active March 3, 2026 22:49
Show Gist options
  • Select an option

  • Save twobob/d3a06bf13635a8e5299cdcf4c0ff8384 to your computer and use it in GitHub Desktop.

Select an option

Save twobob/d3a06bf13635a8e5299cdcf4c0ff8384 to your computer and use it in GitHub Desktop.
# Disable Telemetry Scheduled Tasks # Run as Administrator
<#
.SYNOPSIS
Comprehensive Telemetry, AI, and Diagnostic Task Disabler.
.DESCRIPTION
Combines explicit path targeting with wildcard discovery to ensure
all data collection and background management tasks are neutralized.
Run as Administrator.
#>
# 1. Explicitly Defined Targets (The "Known Offenders")
$tasks = @(
# Application Experience (Telemetry)
@{ Path = "\Microsoft\Windows\Application Experience\"; Name = "Microsoft Compatibility Appraiser" },
@{ Path = "\Microsoft\Windows\Application Experience\"; Name = "ProgramDataUpdater" },
@{ Path = "\Microsoft\Windows\Application Experience\"; Name = "StartupAppScan" },
# Customer Experience (CEIP)
@{ Path = "\Microsoft\Windows\Customer Experience Improvement Program\"; Name = "Consolidator" },
@{ Path = "\Microsoft\Windows\Customer Experience Improvement Program\"; Name = "UsbCeip" },
# Windows AI / Recall / Copilot
@{ Path = "\Microsoft\Windows\WindowsAI\"; Name = "Recall" },
@{ Path = "\Microsoft\Windows\WindowsAI\"; Name = "Copilot" },
@{ Path = "\Microsoft\Windows\Windows AI\"; Name = "AITask" },
# Speech & Input
@{ Path = "\Microsoft\Windows\Speech\"; Name = "SpeechModelDownloadTask" },
@{ Path = "\Microsoft\Windows\TextServicesFramework\"; Name = "MsCtfMonitor" },
# Error Reporting & Diagnostics
@{ Path = "\Microsoft\Windows\Windows Error Reporting\"; Name = "QueueReporting" },
@{ Path = "\Microsoft\Windows\Autochk\"; Name = "Proxy" },
@{ Path = "\Microsoft\Windows\DiskDiagnostic\"; Name = "Microsoft-Windows-DiskDiagnosticDataCollector" },
# Energy & Device Management (The "Silent" Uploaders)
@{ Path = "\Microsoft\Windows\Energy\"; Name = "PowerEfficiencyDiagnosticUserLog" },
@{ Path = "\Microsoft\Windows\Device Management\"; Name = "Dmvsc" },
# Maps & Xbox
@{ Path = "\Microsoft\Windows\Maps\"; Name = "MapsUpdateTask" },
@{ Path = "\Microsoft\Windows\Maps\"; Name = "MapsToastTask" },
@{ Path = "\Microsoft\Windows\XblGameSave\"; Name = "XblGameSaveTask" }
)
Write-Host "--- Disabling Explicitly Targeted Tasks ---" -ForegroundColor Cyan
foreach ($t in $tasks) {
$fullPath = $t.Path + $t.Name
try {
$task = Get-ScheduledTask -TaskPath $t.Path -TaskName $t.Name -ErrorAction Stop
if ($task.State -ne "Disabled") {
Disable-ScheduledTask -TaskPath $t.Path -TaskName $t.Name | Out-Null
Write-Host "[DISABLED] $fullPath" -ForegroundColor Green
} else {
Write-Host "[ALREADY DISABLED] $fullPath" -ForegroundColor DarkGray
}
}
catch {
Write-Host "[NOT FOUND] $fullPath (skipped)" -ForegroundColor DarkGray
}
}
# 2. Wildcard Search (Catches SQM and dynamically named AI tasks)
Write-Host "`n--- Scanning for Wildcard Matches (*Sqm*, *Telemetry*, *Experience*) ---" -ForegroundColor Cyan
$keywords = @("*Sqm*", "*Telemetry*", "*Experience*", "*Survey*")
foreach ($key in $keywords) {
$foundTasks = Get-ScheduledTask -TaskName $key -ErrorAction SilentlyContinue
foreach ($ft in $foundTasks) {
if ($ft.State -ne "Disabled") {
Disable-ScheduledTask -TaskName $ft.TaskName -TaskPath $ft.TaskPath | Out-Null
Write-Host "[WILDCARD DISABLE] $($ft.TaskPath)$($ft.TaskName)" -ForegroundColor Yellow
}
}
}
Write-Host "`nHardening complete. System is now significantly quieter." -ForegroundColor Green
#Requires -RunAsAdministrator
<#
.SYNOPSIS
Disables Windows telemetry, AI workload, and bloat services.
.DESCRIPTION
Sets targeted services to Disabled and stops them if running.
High-risk services (likely to be re-enabled by Windows updates) also
receive a direct registry write (Start = 4) as a second line of defence.
All changes are reversible:
Set-Service -Name <ServiceName> -StartupType Manual
Start-Service -Name <ServiceName>
.NOTES
Tested on Windows 11 24H2.
Run in PowerShell as Administrator.
After major Windows updates, re-run to catch re-enabled services.
.LINK
https://gist.github.com
#>
# -------------------------------------------------------------------------
# Service definitions
# Format: Name, Reason, and optionally HardenRegistry = $true for services
# known to be resurrected by Windows updates.
# -------------------------------------------------------------------------
$services = @(
# --- Core Telemetry ---
@{ Name = "DiagTrack"; HardenRegistry = $true;
Reason = "Connected User Experiences & Telemetry - primary phone-home service" },
@{ Name = "dmwappushservice"; HardenRegistry = $true;
Reason = "WAP push routing, feeds DiagTrack" },
@{ Name = "diagsvc"; Reason = "Diagnostic execution service" },
@{ Name = "WdiServiceHost"; Reason = "Diagnostic Service Host" },
@{ Name = "WdiSystemHost"; Reason = "Diagnostic System Host" },
@{ Name = "DPS"; Reason = "Diagnostic Policy Service" },
# --- Windows AI Fabric ---
# Introduced via KB5055523 (~April 2025). Manages Recall, Copilot,
# semantic search, and NPU workloads. Spawns WorkloadsSessionHost.exe
# which can consume 9-15 GB RAM on 16 GB systems.
@{ Name = "WSAIFabricSvc"; HardenRegistry = $true;
Reason = "AI workload manager - Recall, Copilot, semantic search, NPU tasks" },
# --- Error Reporting ---
@{ Name = "WerSvc"; Reason = "Windows Error Reporting" },
@{ Name = "wercplsupport"; Reason = "Problem Reports control panel support" },
@{ Name = "SDRSVC"; Reason = "Windows Backup / WER integration" },
# --- Inventory & Compatibility Telemetry ---
@{ Name = "InventorySvc"; Reason = "Inventory and compatibility telemetry collector" },
@{ Name = "PcaSvc"; Reason = "Program Compatibility Assistant - reports app compat data to Microsoft" },
@{ Name = "TroubleshootingSvc"; Reason = "Recommended Troubleshooting - fetches scripts from Microsoft servers" },
# --- Remote Registry (privacy & security risk) ---
@{ Name = "RemoteRegistry"; Reason = "Allows remote read/write of registry - no legitimate use on a personal PC" },
# --- Xbox / Game telemetry ---
# Safe to disable if you don't use Xbox Game Pass or Xbox Live features.
@{ Name = "XblAuthManager"; Reason = "Xbox Live authentication" },
@{ Name = "XblGameSave"; Reason = "Xbox Live cloud game save sync" },
@{ Name = "XboxGipSvc"; Reason = "Xbox accessory management" },
@{ Name = "XboxNetApiSvc"; Reason = "Xbox networking API" },
# --- MDM / Enterprise Push (unneeded on personal PCs) ---
@{ Name = "WManSvc"; Reason = "Windows Management Service - MDM policy push" },
@{ Name = "DmEnrollmentSvc"; Reason = "Device Management Enrollment - MDM" },
# --- Miscellaneous Bloat ---
@{ Name = "RetailDemo"; Reason = "Retail demo mode - no purpose on a personal machine" },
@{ Name = "wisvc"; Reason = "Windows Insider Service - telemetry uploader if enrolled, useless if not" },
@{ Name = "MapsBroker"; Reason = "Downloads map data in the background" },
@{ Name = "WMPNetworkSvc"; Reason = "Windows Media Player network sharing" }
)
# -------------------------------------------------------------------------
# Registry path for hardened disables (Start = 4 = SERVICE_DISABLED)
# -------------------------------------------------------------------------
$regBase = "HKLM:\SYSTEM\CurrentControlSet\Services"
# -------------------------------------------------------------------------
# Main loop
# -------------------------------------------------------------------------
$disabled = 0
$skipped = 0
foreach ($svc in $services) {
try {
$s = Get-Service -Name $svc.Name -ErrorAction Stop
# Stop if running
if ($s.Status -eq 'Running') {
Stop-Service -Name $svc.Name -Force -ErrorAction SilentlyContinue
}
# Disable via SCM
Set-Service -Name $svc.Name -StartupType Disabled
# Optionally harden via registry
if ($svc.HardenRegistry) {
$regPath = "$regBase\$($svc.Name)"
if (Test-Path $regPath) {
Set-ItemProperty -Path $regPath -Name "Start" -Value 4 -Type DWord -Force
Write-Host "[DISABLED + HARDENED] $($svc.Name)" -ForegroundColor Green
} else {
Write-Host "[DISABLED] $($svc.Name)" -ForegroundColor Green
}
} else {
Write-Host "[DISABLED] $($svc.Name)" -ForegroundColor Green
}
Write-Host " $($svc.Reason)" -ForegroundColor DarkGray
$disabled++
}
catch {
Write-Host "[NOT FOUND] $($svc.Name) (skipped - may not exist on this Windows version)" -ForegroundColor DarkGray
$skipped++
}
}
# -------------------------------------------------------------------------
# Summary
# -------------------------------------------------------------------------
Write-Host ""
Write-Host "Complete. $disabled service(s) disabled, $skipped not found." -ForegroundColor Cyan
Write-Host "To reverse any entry: Set-Service -Name <ServiceName> -StartupType Manual" -ForegroundColor Cyan
Write-Host ""
Write-Host "Note: Re-run after major Windows updates - some services may be re-enabled." -ForegroundColor Yellow
Open a POWERSHELL window as admin and run the following then choose y (Yoiu can change it back after if you want)
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
you to the security risks described in the about_Execution_Policies help topic at
https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): y
then run the script
(base) PS C:\WINDOWS\system32> C:\Users\you\Downloads\disable-tasks.ps1
[DISABLED] \Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser
[NOT FOUND] \Microsoft\Windows\Application Experience\ProgramDataUpdater (skipped)
[DISABLED] \Microsoft\Windows\Customer Experience Improvement Program\Consolidator
[DISABLED] \Microsoft\Windows\Customer Experience Improvement Program\UsbCeip
[DISABLED] \Microsoft\Windows\Speech\SpeechModelDownloadTask
[DISABLED] \Microsoft\Windows\Windows Error Reporting\QueueReporting
[DISABLED] \Microsoft\Windows\Autochk\Proxy
[NOT FOUND] \Microsoft\Windows\WindowsAI\Recall (skipped)
[NOT FOUND] \Microsoft\Windows\WindowsAI\Copilot (skipped)
Done. Tasks not found were skipped (may not exist on this Windows version).
@twobob
Copy link
Author

twobob commented Mar 3, 2026

(base) PS C:\WINDOWS\system32> C:\Users\you\Downloads\disable-services.ps1
[DISABLED + HARDENED] DiagTrack
Connected User Experiences & Telemetry - primary phone-home service
[DISABLED + HARDENED] dmwappushservice
WAP push routing, feeds DiagTrack
[DISABLED] diagsvc
Diagnostic execution service
[DISABLED] WdiServiceHost
Diagnostic Service Host
[DISABLED] WdiSystemHost
Diagnostic System Host
[DISABLED] DPS
Diagnostic Policy Service
[DISABLED + HARDENED] WSAIFabricSvc
AI workload manager - Recall, Copilot, semantic search, NPU tasks
[DISABLED] WerSvc
Windows Error Reporting
[DISABLED] wercplsupport
Problem Reports control panel support
[DISABLED] SDRSVC
Windows Backup / WER integration
[DISABLED] InventorySvc
Inventory and compatibility telemetry collector
[DISABLED] PcaSvc
Program Compatibility Assistant - reports app compat data to Microsoft
[DISABLED] TroubleshootingSvc
Recommended Troubleshooting - fetches scripts from Microsoft servers
[DISABLED] RemoteRegistry
Allows remote read/write of registry - no legitimate use on a personal PC
[DISABLED] XblAuthManager
Xbox Live authentication
[DISABLED] XblGameSave
Xbox Live cloud game save sync
[DISABLED] XboxGipSvc
Xbox accessory management
[DISABLED] XboxNetApiSvc
Xbox networking API
[DISABLED] WManSvc
Windows Management Service - MDM policy push
[DISABLED] DmEnrollmentSvc
Device Management Enrollment - MDM
[DISABLED] RetailDemo
Retail demo mode - no purpose on a personal machine
[DISABLED] wisvc
Windows Insider Service - telemetry uploader if enrolled, useless if not
[DISABLED] MapsBroker
Downloads map data in the background
[DISABLED] WMPNetworkSvc
Windows Media Player network sharing

Complete. 24 service(s) disabled, 0 not found.
To reverse any entry: Set-Service -Name -StartupType Manual

Note: Re-run after major Windows updates - some services may be re-enabled.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment