如何在 Windows 10 启动时清除打印队列

如何在 Windows 10 启动时清除打印队列

我们有运行 1803 的 Windows 10 机器。我们需要在每次启动时清除打印队列。

打印后台处理程序设置为手动。我们有一个通过任务计划程序安排的 powershell 脚本,用于在启动和用户登录时以 NT AUTHORITY\SYSTEM 身份运行 powershell 脚本

程序/脚本:Powershell 添加参数(可选):-File“C:\production\Printer Queue Clear\printqueueClear.ps1”

有问题的脚本(如果服务设置为手动启动,则 net stop spooler 是多余的,我知道)

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

相关内容