У меня есть устаревшее приложение, которое печатает, и я не могу отключить это в приложении. Эта задача печатает в определенную Windows очередь принтера. Проблема, с которой я сталкиваюсь, заключается в том, что без реального подключенного принтера очередь печати наполняется, а затем задания, которые печатаются, останавливаются, ожидая, пока очередь ответит, что задание принято.
Устаревшее приложение печатает с помощью скриптов Powershell.
if( sm_control_flag )
{
get-content $TO_PRINTER | Out-Printer -name $cfgs.PRINTER_QUEUE
}
Проблема в том, что эти сценарии нельзя изменить, поскольку они находятся в производстве в распределенных местах. Существует целый ряд сценариев, которые выполняют этот процесс.
Out-Printer должен вернуть успех, а не ошибку, иначе скрипт будет прерван с ошибкой печати. Следовательно, очередь должна существовать (это, в основном, принтер, определенный в ОС Windows Server).
Если в очереди не определен и не подключен настоящий принтер, Windows примет задание и поставит выходные данные на печать. Проблема в том, что очередь в конечном итоге заполнит свободное место на сервере, а затем заблокирует всю печать. Out-Printer сценария Powershell также приостановит и будет ожидать освобождения места в очереди, когда очередь заполнится.
Я не могу отключить печать на компьютере и удалить задания, так как другие принтеры подключены и нуждаются в печати. Мне нужен драйвер принтера, который просто принимает задание на печать, но ничего с ним не делает. Мне не нужно его печатать, просто удалите.
Я также пытался просто напечатать в файл, чтобы я мог повторно использовать одно и то же имя файла каждый раз, что переписывало бы последний вывод на печать и отвечало моим потребностям. Проблема в том, что печать в файл всегда, кажется, запрашивает у пользователя имя файла. Поскольку это сервер Windows, пользователь не может запрашивать имя файла, поэтому он блокирует очередь и также приостанавливает выполнение сценария.
Кто-нибудь знает способ принять задания, а затем просто удалить вывод, а не распечатать задание?