Если на принт-сервере Windows подключено большое количество сетевых принтеров, вы можете периодически сталкиваться с зависанием очередей печати. Застрявшее в очереди печати задание мешает отправки на печать других документов. В этом случае нужно попробовать удаления застрявшее задание или полностью очистить очередь печати.
Удаление зависшего задания из очереди печати принтера
В первую очередь попробуйте выполнить мягкую очистку очереди печати с помощью консоли Print Management (printmanagement.msc
). Разверните секцию All Printers -> Щелкните по вашему принтеру и выберите Open Printer Queue.
Найдите зависшее задание в списке заданий печати и отмените его (Cancel).
Если это не помогло, полностью очистите очередь печати из меню управления заданиями принтера (Printer -> Cancel all documents).
Обязательно проверьте, что в меню управления очередь печати не включены опции Pause Printing или Use Printer Offline.
В первую очередь проверьте, что в меню управлению очередью печати Windows не включены опции Pause Printing и Use Printer Offline. Отключите их.
Если мягкая очистка не помогла, и вы не можете перезагрузить сервер печати прямо сейчас, можно попробовать вручную удалить задания печати на диске.
Когда служба Windows (Print Spooler) получает документ, она создает в каталоге %systemroot%\System32\spool\PRINTERS
два файла: один с расширением .shd (содержит настройки задания печати), второй .spl (содержит сырые данные, которые нужно распечатать). После успешной печати, эти файлы автоматически удаляются как из этого каталога, так и из очереди печати.
Если открыть SHD файл с помощью блокнота, можно определить имя документа, принтер и пользователя, который отправил это задание на печать.
Вы можете удалить зависшее задание печати из очереди, вручную удалив SHD и SPL файл задания. Для этого нужно сначала остановить службу печати (консоль services.msc -> служба Print Spooler -> Stop).
После этого удалите файлы задания с диска и запустите службу печати. Откройте окно управления очередь печати и проверьте, что зависшее задание было удалено.
Принудительная очистка очереди печати в Windows
Если предыдущий способ не помог, вы можете полностью очистить очередь печати на сервере, но при этом будут удалены все (!!!) задания печати в очередях всех принтеров.
Для этого откройте командную строку с правами администратора и по очереди выполните следующие команды:
net stop spooler
del %systemroot%\system32\spool\printers\*.shd /F /S /Q
del %systemroot%\system32\spool\printers\*.spl /F /S /Q
net start spooler
Если вам больше нравится PowerShell, вы можете очистить очередь печати таким скриптом:
Get-Service *spool* | Stop-Service -Force -Verbose
Start-Sleep -Seconds 5
$path = $env:SystemRoot + "\system32\spool\printers\"
Get-ChildItem $path -File | Remove-Item -Force -Verbose
Get-Service Spooler | Start-Service -Verbose
Если у вас в очередях печати копятся старые документы, вы можете периодически удалять их из очереди. Например, следующий скрипт удаляет из очередей печати все документы, старше 2 дней.
Get-Printer | get-printjob | where{$_.SubmittedTime -lt ((Get-Date).adddays(-2))} | Remove-PrintJob