Temos máquinas com Windows 10 rodando 1803. Precisamos limpar a fila de impressão em CADA inicialização.
O spooler de impressão está configurado para manual. Temos um script powershell agendado através do agendador de tarefas para executar um script powershell na inicialização e no login do usuário como NT AUTHORITY\SYSTEM
Programa/script: Powershell Adicionar argumentos (opcional): -File "C:\production\Printer Queue Clear\printqueueClear.ps1"
O script em questão (o spooler de parada de rede é redundante se o serviço estiver configurado para inicialização manual, eu sei)
net stop spooler
Remove-Item C:\Windows\System32\spool\PRINTERS\* -Force
net start spooler
O problema: se um trabalho estiver na fila com a impressora conectada por USB desconectada do computador, o computador será desligado (com os trabalhos de impressão ainda na fila), a impressora será reconectada e, em seguida, o computador será iniciado, todos os trabalhos de impressão serão enviado assim que o usuário inicia o login. Por motivos de conformidade, não podemos permitir que isso aconteça.
A verdadeira questão é por que o spooler de impressão está exibindo os trabalhos na fila se: 1. está definido como manual 2. o código em questão só inicia o spooler depois que a unidade de spool da impressora é limpa.
Responder1
Não tenho certeza da importância de o serviço de spooler ser definido como manual. O Windows é capaz de iniciar serviços (sob demanda) sem a sua intervenção.
Parece que a maneira mais fácil de resolver o cenário descrito é executar o script no desligamento ou logoff, em vez de na inicialização ou no login.
Além disso, você pode desabilitar o serviço de spooler de impressão ao desligar ou fazer logoff e ativá-lo somente depois de executar alguma tarefa na inicialização ou login, se houver um cenário que não conheço.
Responder2
Seu código não funciona. Tente isto se estiver realmente definido como manual:
net stop spooler
Remove_Item $env:windir\System32\spool\PRINTERS\* -Force
net start spooler
Responder3
Erro de digitação no código, deve ser um-
menos não um_
sublinhado no Remove-Item
código de trabalho: (mas no PowerShell, não no cmd):
net stop spooler
Remove-Item $env:windir\System32\spool\PRINTERS\* -Force
net start spooler