我們有運行 1803 的 Windows 10 機器。
後台列印程序設定為手動。我們透過任務計劃程式安排了一個 powershell 腳本,以在啟動和使用者登入為 NT AUTHORITY\SYSTEM 時執行 powershell 腳本
程式/腳本:Powershell 新增參數(可選):-File "C:\product\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