Отключение сбора диагностики в Windows 10 скриптом
Windows 10 может отправлять в корпорацию Microsoft диагностические сведения о системе, совместимости приложений, состоянии обновлений и ошибках. В состав телеметрии входят журналы, сведения об оборудовании, история использования программ и обратная связь. Сценарий ниже показывает, как отключить сбор данных диагностики в Windows 10 через скрипт PowerShell, не затрагивая основные средства безопасности.
Для автоматизации потребуются права администратора. Скрипт создаёт локальную политику, отключает службу DiagTrack и блокирует несколько заданий планировщика, отвечающих за диагностику и инвентаризацию. Он не удаляет уже собранные сведения, поэтому существующие журналы и очереди передачи стоит проверить отдельно.
| Способ | Что контролирует | Преимущество | Важный нюанс |
|---|---|---|---|
| Параметры Windows | Выбор уровня диагностических данных | Простое визуальное управление | Доступны не все параметры на каждой версии |
| Политика реестра | AllowDiagnosticData, AllowTelemetry и DoNotSendTelemetry |
Настройка применяется ко всей системе | Может перезаписываться доменной политикой |
| Служба и задания | DiagTrack, Compatibility Appraiser и другие фоновые компоненты |
Более полное сокращение активности | Возможны отдельные сбои после обновления |
Что собирает Windows 10
Диагностические данные — это обобщённые сведения о работе компьютера и программ. Windows может собирать сведения об установленном оборудовании, драйверах, запуске приложений, состоянии хранилища и возникших ошибках. В зависимости от выпуска, выбранного уровня телеметрии и действий пользователя набор информации различается.
Система использует несколько независимых механизмов. Основной из них — служба DiagTrack, связанная с компонентом Connected User Experiences and Telemetry. Кроме неё, данные формируют задания планировщика, приложения и облачные службы. Поэтому параметр в разделе «Конфиденциальность» способен отключить только часть активности, а комплексный сценарий действует глубже.
Подготовка PowerShell
Создайте обычный текстовый файл с именем disable-diagnostics.ps1 и сохраните его, например, на рабочем столе. Расширение .ps1 должно остаться в имени, а тип файла при сохранении — «Все файлы». Затем откройте PowerShell через меню «Пуск», выберите «Запуск от имени администратора» и перейдите в папку с сохранённым сценарием.
Если PowerShell сообщает, что запуск сценариев запрещён политикой безопасности, разрешите выполнение только в текущем окне. Это временная настройка, не меняющая общие параметры компьютера. Запускать файл нужно именно из повышенной сессии, иначе изменения политики и службы будут отклонены.
Set-ExecutionPolicy -Scope Process Bypass -Force
.\disable-diagnostics.ps1
Вместо предварительного разрешения можно сразу открыть файл с параметром ExecutionPolicy Bypass. Способ подходит для разовой проверки, хотя постоянный запуск через запланированную задачу обычно удобнее.
Скрипт для отключения диагностики
Основная часть сценария создаёт ключ локальной групповой политики и задаёт для него значения AllowDiagnosticData=0, AllowTelemetry=0 и DoNotSendTelemetry=1. Первые параметры отключают передачу диагностических сведений, а последний устанавливает дополнительный запрет отправки. Такое сочетание поддерживает разные поколения Windows 10 и редакций системы.
#Requires -RunAsAdministrator
$ErrorActionPreference = 'Stop'
$policyPath = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection'
New-Item -Path $policyPath -Force | Out-Null
$values = @(
@{ Name = 'AllowDiagnosticData'; Value = 0 },
@{ Name = 'AllowTelemetry'; Value = 0 },
@{ Name = 'DoNotSendTelemetry'; Value = 1 }
)
foreach ($entry in $values) {
New-ItemProperty -Path $policyPath -Name $entry.Name -PropertyType DWord -Value $entry.Value -Force | Out-Null
}
if (Get-Service -Name 'DiagTrack' -ErrorAction SilentlyContinue) {
try {
Stop-Service -Name 'DiagTrack' -Force -ErrorAction SilentlyContinue
Set-Service -Name 'DiagTrack' -StartupType Disabled
}
catch {
Write-Warning 'Не удалось изменить службу DiagTrack.'
}
}
$tasks = @(
@{ Path = '\Microsoft\Windows\Application Experience\'; Name = 'Microsoft Compatibility Appraiser' },
@{ Path = '\Microsoft\Windows\Application Experience\'; Name = 'ProgramDataUpdater' },
@{ Path = '\Microsoft\Windows\Customer Experience Improvement Program\'; Name = 'Consolidator' },
@{ Path = '\Microsoft\Windows\Customer Experience Improvement Program\'; Name = 'UsbCeip' },
@{ Path = '\Microsoft\Windows\Autochk\'; Name = 'Proxy' }
)
foreach ($definition in $tasks) {
$scheduledTask = Get-ScheduledTask -TaskPath $definition.Path -TaskName $definition.Name -ErrorAction SilentlyContinue
if ($scheduledTask) {
Disable-ScheduledTask -InputObject $scheduledTask -ErrorAction SilentlyContinue | Out-Null
}
}
Write-Host 'Настройки применены. Рекомендуется перезагрузить компьютер.'
Задания блокируют регулярную проверку совместимости, обновление инвентаризации программ и передачу обратной связи. Служба DiagTrack отключается целиком, поэтому после выполнения сценария она не должна запускаться. Перезагрузка помогает завершить текущие сеансы службы и гарантирует применение политики всеми компонентами системы.
Проверка результата и откат
Откройте PowerShell от имени администратора и проверьте значения реестра, состояние службы и задания. В параметрах политики должны быть числа 0, 0 и 1, а служба — остановлена и переведена в режим Disabled. Состояние перечисленных диагностических заданий должно показывать Disabled.
Get-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection' |
Select-Object AllowDiagnosticData, AllowTelemetry, DoNotSendTelemetry
Get-CimInstance Win32_Service -Filter "Name='DiagTrack'" |
Select-Object Name, State, StartMode
Get-ScheduledTask |
Where-Object {
$_.TaskPath -like '\Microsoft\Windows\Application Experience\*' -or
$_.TaskPath -like '\Microsoft\Windows\Customer Experience Improvement Program\*' -or
$_.TaskPath -like '\Microsoft\Windows\Autochk\*'
} |
Select-Object TaskPath, TaskName, State
Если отключение вызвало проблемы с отдельной программой, настройки можно вернуть. Удаление трёх параметров восстанавливает стандартное поведение политики, а служба и задания получают прежние разрешения. Перед откатом полезно сохранить резервную копию ветки реестра и уточнить исходный тип запуска службы.
$policyPath = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection'
'AllowDiagnosticData', 'AllowTelemetry', 'DoNotSendTelemetry' |
ForEach-Object {
Remove-ItemProperty -Path $policyPath -Name $_ -ErrorAction SilentlyContinue
}
Set-Service -Name 'DiagTrack' -StartupType Automatic
Start-Service -Name 'DiagTrack'
Enable-ScheduledTask -TaskPath '\Microsoft\Windows\Application Experience\' -TaskName 'Microsoft Compatibility Appraiser'
Enable-ScheduledTask -TaskPath '\Microsoft\Windows\Application Experience\' -TaskName 'ProgramDataUpdater'
Enable-ScheduledTask -TaskPath '\Microsoft\Windows\Customer Experience Improvement Program\' -TaskName 'Consolidator'
Enable-ScheduledTask -TaskPath '\Microsoft\Windows\Customer Experience Improvement Program\' -TaskName 'UsbCeip'
Enable-ScheduledTask -TaskPath '\Microsoft\Windows\Autochk\' -TaskName 'Proxy'
Что скрипт не отключает
Сценарий не выключает Защитника Windows, SmartScreen, брандмауэр, систему обновлений и Credential Guard. Эти компоненты могут отдельно обращаться к серверам Microsoft для проверки файлов, получения обновлений и защиты учётных данных. Полное отключение сетевого обмена нарушит важные функции безопасности, поэтому такие процессы следует настраивать отдельно и с пониманием их назначения.
Настройка также не управляет историей активности, синхронизацией учётной записи Microsoft, OneDrive, рекламными параметрами и разрешениями приложений. Отдельные программы способны отправлять собственные отчёты об ошибках. Для изображений, публикуемых в блоге, полезно отдельно проверить качество обработки; тема сканеров и изображений дополняет настройку рабочего места, но не меняет параметры телеметрии Windows.
Почему настройки могут измениться
Windows 10 способна восстанавливать некоторые компоненты после крупных обновлений, восстановления системы или применения политики из MDM. Доменная групповая политика имеет более высокий приоритет и может вернуть разрешённую диагностику либо задать другой уровень телеметрии. Поэтому одноразовое выполнение сценария не всегда обеспечивает постоянный результат.
Если компьютер используется для подготовки публикаций, советы о устройстве блога помогают отделить редакционные процессы от системных служб. Практический подход заключается в регулярной проверке параметров после обновлений и создании резервной копии затрагиваемой ветки реестра. Это позволяет быстро обнаружить восстановление службы и повторно применить сценарий.
Закрепите настройки и контролируйте результат
Для постоянного применения параметров создайте задачу в планировщике Windows и запускайте сохранённый .ps1 при входе пользователя либо раз в неделю. Задача должна выполняться с наивысшими правами, а файл сценария — храниться в защищённой папке, доступной администраторам. Дополнительно сохраняйте экспорт ветки политики и результаты проверки, чтобы контролировать изменения после обновлений.
Если публикации идут через WordPress, краткое руководство WordPress поможет администратору отделить параметры сайта от настроек операционной системы. Запустите подготовленный сценарий в PowerShell от имени администратора, проверьте значения и настройте его повторное выполнение. Такой порядок даёт предсказуемый результат и позволяет быстро вернуть работоспособность функции, если конкретная программа начнёт зависеть от диагностической службы.