Оптимизация эталонной сборки Windows: удаление компонентов и настройка политик | AdminWiki

Оптимизация эталонной сборки Windows: удаление компонентов и настройка политик

05 августа 2026 9 мин. чтения
Содержание статьи

Зачем оптимизировать эталонную сборку Windows

Стандартный образ Windows содержит десятки предустановленных UWP-приложений, фоновые службы телеметрии и компоненты, которые не нужны в корпоративной среде. Удаление этого балласта сокращает размер WIM-образа на 30-50%, ускоряет развертывание на парке машин и снижает нагрузку на сеть. Для организации с 200 рабочими станциями уменьшение образа на 2 ГБ экономит 400 ГБ трафика при каждой массовой переустановке.

Оптимизация решает три бизнес-задачи: стандартизацию конфигураций, повышение безопасности и предсказуемость поведения системы. Вы получаете сборку без рекламных плиток, без внезапных перезагрузок для установки обновлений и с закрытыми каналами утечки данных во внешние серверы Microsoft.

Типичные проблемы заводского образа: приложения Xbox, Candy Crush и Spotify занимают место и отвлекают пользователей, телеметрия передает данные о работе системы, а автоматические обновления могут перезагрузить машину в разгар рабочего дня. Оптимизация убирает эти риски на уровне эталонной сборки, до попадания системы к конечному пользователю.

Если вы только начинаете выстраивать процесс создания кастомных образов, изучите руководство по созданию эталонной сборки Windows - там разобраны захват образа, интеграция драйверов и автоматизация развертывания через MDT и SCCM.

Подготовка среды для модификации образа

Модификация образа требует изолированной среды и точного следования процедуре. Ошибка на этом этапе испортит WIM-файл, и развертывание станет невозможным. Работайте на тестовой машине или виртуальной станции с достаточным дисковым пространством.

Необходимые инструменты: Windows ADK и DISM

Для работы нужен пакет Windows Assessment and Deployment Kit (Windows ADK). Он содержит DISM, утилиты для работы с образами и средства развертывания. Загрузите ADK с официального сайта Microsoft, выберите версию, соответствующую целевой редакции Windows. При установке отметьте компоненты «Средства развертывания» и «Среда предустановки Windows».

Проверьте версию DISM после установки. Откройте командную строку от имени администратора и выполните:

dism /version

Убедитесь, что версия DISM не ниже 10.0.19041. Для Windows 11 используйте ADK версии 22H2 или новее.

Создание резервной копии и монтирование образа

Создайте копию исходного WIM-файла перед любыми изменениями. Это страховка от необратимых ошибок. Разместите копию на отдельном диске или сетевом хранилище.

Смонтируйте образ в пустую папку. Создайте директорию C:\Mount и выполните:

dism /Mount-Image /ImageFile:"D:\Images\install.wim" /Index:1 /MountDir:"C:\Mount"

Параметр /Index указывает редакцию Windows внутри WIM-файла. Чтобы узнать список редакций, используйте:

dism /Get-ImageInfo /ImageFile:"D:\Images\install.wim"

После монтирования образ доступен как обычная файловая система в папке C:\Mount. Все изменения применяются к образу, а не к хостовой системе.

Удаление предустановленных приложений и компонентов

Удаление ненужного ПО - самый эффективный способ сократить размер образа. Цель: убрать UWP-приложения, которые Microsoft предустанавливает для потребительского рынка, и отключить системные компоненты, не востребованные в корпоративной среде.

Удаление UWP-приложений через PowerShell

Предустановленные приложения хранятся в образе как провизионированные пакеты. Простое удаление через Remove-AppxPackage в установленной системе не затрагивает провизионированные копии - при создании нового профиля приложения восстановятся. Нужно удалять именно провизионированные пакеты из смонтированного образа.

Скрипт для массового удаления:

$apps = @(
    "Microsoft.BingWeather",
    "Microsoft.BingNews",
    "Microsoft.GamingApp",
    "Microsoft.GetHelp",
    "Microsoft.Getstarted",
    "Microsoft.Messaging",
    "Microsoft.MicrosoftOfficeHub",
    "Microsoft.MicrosoftSolitaireCollection",
    "Microsoft.MixedReality.Portal",
    "Microsoft.Office.OneNote",
    "Microsoft.People",
    "Microsoft.SkypeApp",
    "Microsoft.Wallet",
    "Microsoft.WindowsAlarms",
    "Microsoft.WindowsCamera",
    "microsoft.windowscommunicationsapps",
    "Microsoft.WindowsFeedbackHub",
    "Microsoft.WindowsMaps",
    "Microsoft.WindowsSoundRecorder",
    "Microsoft.Xbox.TCUI",
    "Microsoft.XboxApp",
    "Microsoft.XboxGameCallableUI",
    "Microsoft.XboxGamingOverlay",
    "Microsoft.XboxIdentityProvider",
    "Microsoft.XboxSpeechToTextOverlay",
    "Microsoft.YourPhone",
    "Microsoft.ZuneMusic",
    "Microsoft.ZuneVideo",
    "MicrosoftCorporationII.QuickAssist",
    "MicrosoftTeams",
    "Microsoft.549981C3F5F10"
)

foreach ($app in $apps) {
    Get-AppxProvisionedPackage -Path "C:\Mount" | Where-Object {$_.DisplayName -eq $app} | Remove-AppxProvisionedPackage -Path "C:\Mount"
}

Список можно расширить под требования организации. Проверьте, что удаляемые приложения не используются в бизнес-процессах: например, некоторые организации применяют Quick Assist для удаленной поддержки.

Удаление компонентов Windows с помощью DISM

Компоненты Windows - это функциональные части системы, которые не являются приложениями, но занимают место и могут создавать векторы атак. Просмотрите список доступных для удаления компонентов:

dism /Image:"C:\Mount" /Get-Packages /Format:Table

Безопасные для удаления компоненты в корпоративной среде:

  • WindowsMediaPlayer - если используется альтернативное ПО для воспроизведения
  • Printing-XPSServices-Features - XPS-принтер и средство просмотра XPS-документов
  • WorkFolders-Client - клиент рабочих папок, если не используется
  • MediaPlayback - воспроизведение мультимедиа
  • Internet-Explorer-Optional-amd64 - Internet Explorer, если достаточно Edge

Удаление компонента:

dism /Image:"C:\Mount" /Remove-Package /PackageName:"Microsoft-Windows-MediaPlayer-Package~31bf3856ad364e35~amd64~~10.0.19041.1"

Внимание: DISM не проверяет зависимости автоматически при удалении пакетов. Перед удалением изучите зависимости конкретного пакета. Удаление компонента с зависимостями сломает связанные функции.

Очистка временных файлов и кэша после удаления

После удаления приложений и компонентов в образе остаются временные файлы и устаревшие версии компонентов в хранилище WinSxS. Очистите их:

dism /Image:"C:\Mount" /Cleanup-Image /StartComponentCleanup /ResetBase

Параметр /ResetBase удаляет все замененные версии компонентов, делая невозможным откат обновлений. Применяйте его только после финального тестирования сборки.

Дополнительно удалите кэш обновлений:

Remove-Item -Path "C:\Mount\Windows\SoftwareDistribution\Download\*" -Recurse -Force

Эта операция освобождает сотни мегабайт в образе. Если вы управляете обновлениями через WSUS, изучите руководство по устранению неполадок после обновлений - там разобраны методы восстановления при сбоях обновлений.

Настройка групповых политик для управления обновлениями, безопасностью и конфиденциальностью

Групповые политики - основной инструмент централизованного управления конфигурацией Windows в домене. Настройки, примененные на уровне эталонной сборки, действуют сразу после развертывания, до подключения к домену.

Управление обновлениями Windows

Автоматические обновления - главный источник непредсказуемого поведения. Настройте политики так, чтобы обновления устанавливались по расписанию, а не в момент активной работы пользователя.

В редакторе локальной групповой политики (gpedit.msc) перейдите в раздел «Конфигурация компьютера» → «Административные шаблоны» → «Компоненты Windows» → «Центр обновления Windows»:

  • Настройка автоматического обновления: включите, выберите режим «4 - Автоматическая загрузка и установка по расписанию». Укажите день и время вне рабочих часов.
  • Отложить обновления: включите, задайте отсрочку для функциональных обновлений на 60-180 дней, для обновлений качества - на 7-14 дней. Это дает время на тестирование обновлений перед развертыванием.
  • Часы активности: настройте диапазон рабочего времени, в который система не будет перезагружаться для установки обновлений.

Для организаций с собственной инфраструктурой обновлений укажите внутренний WSUS-сервер через политику «Указать размещение службы обновлений Майкрософт в интрасети».

Усиление безопасности через групповые политики

Стандартная установка Windows содержит устаревшие протоколы и службы, которые увеличивают поверхность атаки. Отключите их на уровне образа:

  • Отключение SMBv1: «Конфигурация компьютера» → «Административные шаблоны» → «Сеть» → «Рабочая станция Lanman» → «Включить гостевой вход» - отключите. SMBv1 уязвим для атак типа WannaCry и не нужен в современных сетях.
  • Настройка Windows Defender: включите облачную защиту, автоматическую отправку образцов и сканирование съемных носителей. Политики находятся в разделе «Компоненты Windows» → «Антивирусная программа Microsoft Defender».
  • Политики паролей: «Конфигурация компьютера» → «Конфигурация Windows» → «Параметры безопасности» → «Политики учетных записей» → «Политика паролей». Установите минимальную длину 14 символов, включите сложность и задайте срок действия 90 дней.
  • Отключение автозапуска: «Конфигурация компьютера» → «Административные шаблоны» → «Компоненты Windows» → «Политики автозапуска» → «Отключить автозапуск» - включите для всех устройств.

Отключение телеметрии и повышение конфиденциальности

Windows собирает данные о работе системы и отправляет их на серверы Microsoft. Для организаций, работающих с конфиденциальными данными, это неприемлемо. Настройте политики для минимизации утечек:

  • Разрешить телеметрию: «Конфигурация компьютера» → «Административные шаблоны» → «Компоненты Windows» → «Сбор данных и предварительные сборки» → установите уровень «0 - Безопасность». Этот уровень передает минимум данных, необходимый для работы Защитника Windows.
  • Отключить рекламный идентификатор: «Конфигурация компьютера» → «Административные шаблоны» → «Система» → «Профили пользователей» → «Отключить рекламный идентификатор» - включите.
  • Отключить Cortana: «Конфигурация компьютера» → «Административные шаблоны» → «Компоненты Windows» → «Поиск» → «Разрешить использование Cortana» - отключите.
  • Отключить сбор данных о вводе: «Конфигурация компьютера» → «Административные шаблоны» → «Панель управления» → «Язык и региональные стандарты» → «Отключить сбор данных о рукописном вводе и вводе с клавиатуры» - включите.

Если вам требуется гибкое управление обновлениями, включая сценарии их полного отключения, обратитесь к материалу по управлению автоматическими обновлениями Windows 10/11 - там разобраны методы через реестр и PowerShell.

Автоматизация оптимизации с помощью скриптов

Ручная оптимизация каждого образа отнимает время и подвержена ошибкам. Скрипт выполняет все шаги за минуты и гарантирует идентичность конфигураций. Интегрируйте его в конвейер развертывания.

Пример скрипта для комплексной оптимизации образа

Скрипт принимает путь к смонтированному образу и выполняет полный цикл: удаление приложений, удаление пакетов, очистку и применение настроек реестра, эквивалентных групповым политикам.

param(
    [Parameter(Mandatory=$true)]
    [string]$MountPath
)

# Блок 1: Удаление провизионированных UWP-приложений
$appsToRemove = @(
    "Microsoft.BingWeather",
    "Microsoft.BingNews",
    "Microsoft.GamingApp",
    "Microsoft.GetHelp",
    "Microsoft.Getstarted",
    "Microsoft.MicrosoftSolitaireCollection",
    "Microsoft.People",
    "Microsoft.SkypeApp",
    "Microsoft.WindowsFeedbackHub",
    "Microsoft.WindowsMaps",
    "Microsoft.Xbox.TCUI",
    "Microsoft.XboxApp",
    "Microsoft.XboxGameCallableUI",
    "Microsoft.XboxGamingOverlay",
    "Microsoft.XboxIdentityProvider",
    "Microsoft.XboxSpeechToTextOverlay",
    "Microsoft.YourPhone",
    "Microsoft.ZuneMusic",
    "Microsoft.ZuneVideo",
    "MicrosoftTeams",
    "Microsoft.549981C3F5F10"
)

foreach ($app in $appsToRemove) {
    Get-AppxProvisionedPackage -Path $MountPath | Where-Object {$_.DisplayName -eq $app} | Remove-AppxProvisionedPackage -Path $MountPath
    Write-Host "Removed: $app"
}

# Блок 2: Удаление пакетов Windows
$packagesToRemove = @(
    "Microsoft-Windows-MediaPlayer-Package",
    "Microsoft-Windows-Printing-XPSServices-Package"
)

foreach ($pkg in $packagesToRemove) {
    dism /Image:"$MountPath" /Remove-Package /PackageName:$pkg /NoRestart /Quiet
    Write-Host "Removed package: $pkg"
}

# Блок 3: Очистка компонентов
dism /Image:"$MountPath" /Cleanup-Image /StartComponentCleanup /ResetBase /Quiet
Remove-Item -Path "$MountPath\Windows\SoftwareDistribution\Download\*" -Recurse -Force -ErrorAction SilentlyContinue

# Блок 4: Применение настроек реестра
reg load HKLM\TEMP_MOUNT "$MountPath\Windows\System32\config\SOFTWARE"

# Отключение телеметрии (уровень 0)
Set-ItemProperty -Path "HKLM:\TEMP_MOUNT\Policies\Microsoft\Windows\DataCollection" -Name "AllowTelemetry" -Value 0 -Force

# Отключение рекламного идентификатора
Set-ItemProperty -Path "HKLM:\TEMP_MOUNT\Policies\Microsoft\Windows\AdvertisingInfo" -Name "DisabledByGroupPolicy" -Value 1 -Force

# Отключение Cortana
Set-ItemProperty -Path "HKLM:\TEMP_MOUNT\Policies\Microsoft\Windows\Windows Search" -Name "AllowCortana" -Value 0 -Force

reg unload HKLM\TEMP_MOUNT

Write-Host "Optimization completed for $MountPath"

Сохраните скрипт как Optimize-Image.ps1. Запускайте от имени администратора:

.\Optimize-Image.ps1 -MountPath "C:\Mount"

Интеграция скрипта в процесс развертывания

Скрипт можно встроить в последовательность задач MDT или SCCM как шаг «Выполнить PowerShell». При ручном развертывании запускайте его после монтирования образа и перед сохранением изменений. Для автоматизации полного цикла, включая захват образа, используйте руководство по созданию эталонной сборки - скрипт оптимизации станет одним из шагов в этом процессе.

После применения всех изменений сохраните образ:

dism /Unmount-Image /MountDir:"C:\Mount" /Commit

Параметр /Commit записывает изменения в WIM-файл. Без него все модификации будут отброшены.

Проверка стабильности и решение возможных проблем

Оптимизированный образ требует обязательного тестирования перед развертыванием в продуктивную среду. Разверните сборку на виртуальной машине и проверьте ключевые сценарии.

Методика тестирования оптимизированной сборки

Чек-лист проверки:

  • Загрузка системы: успешный вход под доменной и локальной учетной записью.
  • Сетевые функции: доступ к сетевым папкам, разрешение DNS-имен, работа VPN-клиента.
  • Печать: установка сетевого принтера, печать тестовой страницы.
  • Обновления: поиск и установка обновлений через настроенный канал (WSUS или Windows Update).
  • Корпоративное ПО: запуск всех критичных для бизнеса приложений.
  • Службы: проверка состояния ключевых служб через services.msc.

Выделите на тестирование минимум один рабочий день. Лучше - два, чтобы охватить разные сценарии нагрузки.

Типичные ошибки и их исправление

Ошибка «Компонент не найден» при запуске приложения. Некоторое ПО зависит от удаленных компонентов. Решение: восстановите компонент из исходного образа командой dism /Image:"C:\Mount" /Add-Package или не удаляйте компонент, если от него зависит критичное ПО.

Магазин Windows не работает после удаления приложений. Удаление провизионированных пакетов не влияет на работу Microsoft Store. Если магазин нужен для установки бизнес-приложений, оставьте пакет Microsoft.StorePurchaseApp и Microsoft.WindowsStore.

Служба печати не запускается. Возможно удаление компонента Printing-PrintToPDFServices-Features. Восстановите его, если в организации используют печать в PDF.

Проблемы с зависимостями после удаления пакетов. Проверьте зависимости перед удалением:

dism /Image:"C:\Mount" /Get-PackageInfo /PackageName:"PackageName"

Если после оптимизации возникают ошибки обновлений, воспользуйтесь руководством по устранению неполадок после обновления Windows - там описано восстановление системных файлов через sfc /scannow и DISM.

Систематическое тестирование и документирование результатов превращает оптимизацию из разовой акции в воспроизводимый процесс. Каждое изменение фиксируйте в журнале сборки, чтобы при сбое быстро определить причину.

Поделиться:
Сохранить гайд? В закладки браузера