Eu tenho um aplicativo legado que está imprimindo e não posso desabilitar isso no aplicativo. Esta tarefa é impressa em uma fila de impressora definida pelo Windows. O problema é que, sem uma impressora real conectada, a fila de impressão fica cheia e, em seguida, os trabalhos que estão sendo impressos param, esperando que a fila responda que o trabalho foi aceito.
O aplicativo legado é impresso através do script Powershell.
if( sm_control_flag )
{
get-content $TO_PRINTER | Out-Printer -name $cfgs.PRINTER_QUEUE
}
O problema é que esses scripts não podem ser alterados devido a eles estarem em produção em locais distribuídos. Existem vários scripts que fazem esse tipo de processo.
A saída da impressora precisa retornar um sucesso, não um erro, ou o script será interrompido com um erro de impressão. Portanto, a fila deve existir (que é basicamente uma impressora definida no sistema operacional Windows Server).
Se não houver uma impressora real definida e conectada à fila, o Windows aceitará o trabalho e enfileirará a saída para impressão. O problema é que a fila acabará por preencher o espaço livre no servidor e, em seguida, bloquear toda a impressão. A Out-Printer do script Powershell também fará uma pausa e aguardará que o espaço da fila seja liberado quando a fila estiver cheia.
Não consigo desativar a impressão no computador e excluir trabalhos, pois outras impressoras estão conectadas e precisam ser impressas. O que eu preciso é de um driver de impressora que simplesmente aceita o trabalho de impressão, mas não faz nada com ele. Eu não preciso imprimir, apenas ser deletado.
Eu também estava tentando simplesmente imprimir em um arquivo, para que eu pudesse reutilizar o mesmo nome de arquivo a cada vez, o que sobrescreveria a última saída de impressão e atenderia às minhas necessidades. O problema é que imprimir em um arquivo sempre parece solicitar ao usuário o nome do arquivo. Sendo este um servidor Windows, não há nenhum usuário para realmente solicitar um nome de arquivo, então isso bloqueia a fila e também pausa o script.
Alguém sabe de uma maneira de aceitar os trabalhos e depois simplesmente exclui a saída e não imprime o trabalho?