Управление принтерами в корпоративной сети через групповую политику (GPO) — стандартная практика для системных администраторов. Однако не всегда очевидно, как правильно удалить принтер, развёрнутый через GPO, особенно если он был установлен автоматически или через скрипты. Ошибки в этом процессе могут привести к "призрачным" устройствам в списке пользователей, конфликтам драйверов или даже сбоям печати на других принтерах.

В этой статье разберём три основных метода удаления принтеров через GPO: отмена развёртывания через Group Policy Management, использование скриптов PowerShell и ручная очистка реестра для упрямых случаев. Особое внимание уделим нюансам работы с Windows Server 2019/2022 и совместимости с клиентскими ОС от Windows 10 20H2 до Windows 11 24H2. Если вы администрируете сеть с сотнями пользователей, эти инструкции помогут избежать типичных ошибок и сэкономить часы на устранение последствий.

Почему принтер не удаляется стандартными способами?

Чаще всего проблемы с удалением принтеров через GPO возникают из-за:

  • 🔄 Кэширования политик на клиентских машинах (обновление gpupdate /force не всегда помогает).
  • 📜 Остаточных записей в реестре, которые Windows воспринимает как действующие настройки.
  • 🖨️ Конфликтов драйверов, если принтер был установлен как локальный, а потом развёрнут через GPO.
  • 📡 Репликации Active Directory, когда изменения в GPO не успевают распространиться на все контроллеры домена.

Например, если принтер был развёрнут через User Configuration → Preferences → Control Panel Settings → Printers, его удаление через Computer Configuration может не сработать — и наоборот. Это связано с тем, что политики пользователя и компьютера обрабатываются по-разному. Также стоит помнить, что принтеры, установленные через Group Policy Preferences (GPP), удаляются не так, как те, что были развёрнуты через deployed printers в классическом режиме.

📊 Как вы обычно удаляете принтеры в сети?
Через GPO
Вручную на каждой машине
Скриптами PowerShell
Использую сторонние утилиты

Ещё одна ловушка — принтеры, добавленные вручную пользователями. Они не управляются GPO, но могут конфликтовать с групповой политикой. Если после удаления принтера через GPO он вновь появляется в списке устройств, проверьте:

  • 🔍 Наличие скриптов входа (Logon Scripts) в GPO.
  • 📋 Настройки Print Management на сервере печати.
  • 🖥️ Локальные политики на проблемных машинах (gpedit.msc).

Метод 1: Удаление принтера через Group Policy Management

Самый очевидный способ — отменить развёртывание принтера в консоли Group Policy Management (gpmc.msc). Однако здесь есть нюансы в зависимости от того, как принтер был изначально установлен.

Если принтер развёрнут через Group Policy Preferences (GPP):

  1. Откройте Group Policy Management → найдите GPO, ответственный за развёртывание принтера.
  2. Перейдите в User Configuration → Preferences → Control Panel Settings → Printers.
  3. Найдите запись о принтере, кликните правой кнопкой и выберите Delete.
  4. Обновите политики на клиентских машинах: gpupdate /force.

Если принтер развёрнут через Deployed Printers (классический метод):

  1. В том же GPO перейдите в User Configuration → Policies → Windows Settings → Deployed Printers.
  2. Удалите принтер из списка или отметьте его как Undeployed.
  3. Для компьютерных политик путь будет Computer Configuration → Policies → ....

Сделать бэкап GPO|Убедиться, что принтер не используется в скриптах|Проверить зависимости других GPO|Запланировать обновление политик вне рабочих часов-->

Важно: после удаления принтера из GPO его физическая запись может оставаться на клиентских машинах до следующего цикла обновления политик (по умолчанию — каждые 90 минут плюс случайный offset). Чтобы ускорить процесс, используйте команду:

gpupdate /force /boot

Метод 2: Удаление принтера скриптом PowerShell

Если удаление через GPO не сработало или нужно очистить принтеры на конкретных машинах, поможет PowerShell. Ниже скрипт для удаления принтера по имени:

$printerName = "HP LaserJet M404n (GPO)"

$printer = Get-Printer -Name $printerName -ErrorAction SilentlyContinue

if ($printer) {

Remove-Printer -Name $printerName -Force

Write-Host "Принтер $printerName удалён."

} else {

Write-Host "Принтер $printerName не найден."

}

Для массового удаления (например, всех принтеров с префиксом GPO-):

Get-Printer | Where-Object { $_.Name -like "GPO-*" } | Remove-Printer -Force

Чтобы запустить скрипт удалённо на нескольких машинах, используйте:

$computers = "PC01", "PC02", "PC03"

Invoke-Command -ComputerName $computers -ScriptBlock {

Remove-Printer -Name "HP LaserJet M404n (GPO)" -ErrorAction SilentlyContinue

}

💡

Перед массовым удалением сделайте экспорт текущих принтеров командой Get-Printer | Export-Clixml -Path "C:\Temp\Printers_Backup.xml". Это поможет восстановить настройки при ошибке.

Если скрипт не срабатывает, проверьте:

  • 🔐 Права выполнения: запускайте PowerShell от имени администратора.
  • 📡 WinRM: для удалённого выполнения должен быть включён Enable-PSRemoting.
  • 🛡️ Execution Policy: установите Set-ExecutionPolicy RemoteSigned -Force.

Метод 3: Ручная очистка реестра

В некоторых случаях принтер продолжает отображаться в системе даже после удаления через GPO и PowerShell. Это связано с остаточными записями в реестре. Очистка реестра — крайняя мера, но иногда необходимая.

Внимание! Неправильное редактирование реестра может привести к неработоспособности системы печати. Перед изменениями сделайте бэкап:

reg export "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print" "C:\Print_Registry_Backup.reg"

Для удаления следов принтера:

  1. Откройте regedit и перейдите в: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers
  2. Найдите папку с именем принтера и удалите её.
  3. Проверьте раздел HKEY_CURRENT_USER\Printers\Connections — там могут быть записи о сетевых принтерах.
  4. Перезагрузите машину.
Что делать, если после очистки реестра принтер всё равно появляется?

Это может быть связано с политикой перенаправления принтеров (Printer Redirection) в терминальных сессиях или скриптами входа, которые восстанавливают принтер. Проверьте:

  • Настройки Terminal Services в GPO.
  • Скрипты в User Configuration → Policies → Windows Settings → Scripts (Logon/Logoff).
  • Наличие задач в Task Scheduler, связанных с печатью.

Удаление драйверов принтера

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

Через Print Management:

  1. Откройте Print Management (printmanagement.msc).
  2. Перейдите в All Drivers.
  3. Найдите драйвер по имени принтера, кликните правой кнопкой и выберите Remove Driver Package.

Через командную строку:

pnputil /delete-driver oem*.inf /uninstall /force

Замените oem*.inf на конкретное имя INF-файла драйвера (можно узнать через pnputil /enum-drivers).

Метод удаления Преимущества Недостатки Когда использовать
Через GPO Централизованное управление, нет нужды заходить на каждую машину Могут оставаться следы в реестре, медленное обновление политик Для массового удаления в домене
PowerShell-скрипт Быстрое выполнение, гибкость (можно фильтровать по имени, пути и т.д.) Требует прав администратора, возможны ошибки при удалённом выполнении Для очистки конкретных машин или групп
Очистка реестра Удаляет упрямые следы принтера Риск повреждения системы, требует перезагрузки Если принтер "возвращается" после удаления другими способами
Удаление драйверов Исключает конфликты при установке новых принтеров Может потребовать переустановки драйверов для других устройств Если планируется замена модели принтера

Частые ошибки и их решения

Даже опытные администраторы сталкиваются с проблемами при удалении принтеров через GPO. Вот самые распространённые ошибки и способы их исправления:

1. Принтер удаляется, но появляется снова после перезагрузки.

⚠️ Внимание: Это признак того, что принтер развёрнут через Computer Configuration, а вы удаляете его из User Configuration (или наоборот). Проверьте обе ветки в GPO.

2. Ошибка "Access Denied" при удалении через PowerShell.

  • Запускайте консоль от имени доменного администратора.
  • Проверьте, не заблокирована ли политика User Account Control (UAC).
  • Для удалённого выполнения используйте -Credential:
$cred = Get-Credential

Invoke-Command -ComputerName PC01 -Credential $cred -ScriptBlock { ... }

3. Принтер удалён, но задачи печати висят в очереди.

Очистите очередь печати:

net stop spooler

del %systemroot%\system32\spool\printers\* /q

net start spooler

4. После удаления принтера пропали все сетевые принтеры.

⚠️ Внимание: Это может произойти, если в GPO была включена политика "Remove all shared printers" или скрипт удаления работал слишком агрессивно (например, Remove-Printer -Name *). Восстановите принтеры из бэкапа или разверните их заново.

Автоматизация удаления принтеров

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

1. Скрипт для планировщика задач:

Создайте задачу в Task Scheduler, которая будет запускать скрипт удаления по расписанию (например, раз в неделю). Пример команды для планировщика:

schtasks /create /tn "Cleanup Old Printers" /tr "powershell.exe -File C:\Scripts\Remove-OldPrinters.ps1" /sc weekly /d MON /st 02:00 /ru "DOMAIN\Admin"

2. Использование Group Policy Preferences с условиями:

Вместо полного удаления принтера можно настроить условное развёртывание. Например, развёртывать принтер только для пользователей из определённого отдела или на машинах с конкретным именем. Для этого в настройках GPP используйте Item-level targeting:

  • 📌 По имени компьютера (Computer Name).
  • 👥 По группе безопасности (Security Group).
  • 📍 По IP-диапазону (IP Address Range).

3. Интеграция с системой мониторинга:

Настройте оповещения в Zabbix, PRTG или SCOM на события, связанные с ошибками печати. Например, триггер на событие ID 6161 в журнале Microsoft-Windows-PrintService/Admin (ошибка драйвера принтера).

💡

Автоматизация удаления принтеров сокращает ручную работу на 70%, но требует тестирования в пессочнице перед внедрением в продакшн.

FAQ: Ответы на частые вопросы

Можно ли удалить принтер через GPO, если он был установлен вручную?

Нет, GPO управляет только принтерами, развёрнутыми через групповую политику. Принтеры, установленные пользователями или локальными администраторами, нужно удалять вручную или через скрипты.

Как узнать, через какую GPO развёрнут принтер?

Запустите на клиентской машине команду:

gpresult /h report.html

Откройте сгенерированный report.html и найдите раздел Printers в Applied Group Policy Objects.

Почему после удаления принтера через GPO он остаётся в списке устройств?

Это связано с кэшированием политик. Попробуйте:

  1. Выполнить gpupdate /force /boot.
  2. Перезагрузить машину.
  3. Проверьте, не установлен ли принтер как локальный (в этом случае GPO на него не действует).
Как удалить принтер у конкретного пользователя, не затрагивая других?

Используйте Item-level targeting в GPP:

  1. В настройках принтера в GPO выберите Common → Item-level targeting.
  2. Добавьте условие Security Group и укажите группу, в которой состоит пользователь.
  3. Настройте действие Delete для этого принтера.
Можно ли откатить удаление принтера через GPO?

Да, если:

  • У вас есть бэкап GPO (восстановите его через Group Policy Management).
  • Вы удалили принтер через Undeploy, а не Delete — в этом случае достаточно снова развернуть его.
  • Сохранился скрипт развёртывания — запустите его повторно.

Если принтер был удалён окончательно, его придётся развёртывать заново.