Как очистить очередь печати в Windows 10 при запуске?

Как очистить очередь печати в Windows 10 при запуске?

У нас есть компьютеры с Windows 10 и версией 1803. Нам нужно очищать очередь печати при КАЖДОМ запуске.

Диспетчер печати установлен в ручной режим. У нас есть скрипт powershell, запланированный через планировщик задач для запуска скрипта powershell как при запуске, так и при входе пользователя в систему как NT AUTHORITY\SYSTEM

Программа/скрипт: Powershell Добавить аргументы (необязательно): -Файл "C:\production\Printer Queue Clear\printqueueClear.ps1"

Скрипт, о котором идет речь (сетевой спулер остановки избыточен, если служба настроена на ручной запуск, я знаю)

net stop spooler

Remove-Item C:\Windows\System32\spool\PRINTERS\* -Force

net start spooler

Проблема: если задание ставится в очередь, а подключенный по USB принтер отключен от компьютера, компьютер выключается (при этом задания на печать все еще находятся в очереди), принтер снова подключается, а затем компьютер включается, то все задания на печать отправляются, как только пользователь начинает входить в систему. Из соображений соответствия мы не можем допустить этого.

Настоящий вопрос заключается в том, почему диспетчер очереди печати выплевывает поставленные в очередь задания, если: 1. он установлен в ручной режим; 2. рассматриваемый код запускает диспетчер очереди только после очистки привода спулера принтера.

решение1

Я не уверен в значимости установки службы спулера в ручной режим. Windows способна запускать службы (по требованию) без вашего вмешательства.

Похоже, что самый простой способ решения описанной ситуации — запустить скрипт при завершении работы или выходе из системы, а не при запуске или входе в систему.

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

решение2

Ваш код не работает. Попробуйте это, если он действительно настроен на ручной режим:

net stop spooler
Remove_Item $env:windir\System32\spool\PRINTERS\* -Force
net start spooler

решение3

Ошибка опечатки в коде, должно быть-минус не а_подчеркивание в Remove-Item рабочем коде: (но в powershell, а не cmd):

net stop spooler
Remove-Item $env:windir\System32\spool\PRINTERS\* -Force
net start spooler

Связанный контент