I had a problem in an environment where all users print thru one print server. The printer was worst one and we always had problems to delete some jobs in error. The users were also unable to print when the printer had a job in error. So, we wanted to automate that procedure to keep printers alive as much as possible.
In this case, we found two different but similar solutions, both in PowerShell.
The first is to delete jobs in non-working hours (true the night). We used the script:
get-printer | where {$_.PrinterStatus -ne “Normal”} | get-printjob |Remove-PrintJob
This script deletes all jobs on all printers where the status of the printer is not normal. This are pros and contras:
- It runs thru the night, so the printer could be offline for whole day,
- All jobs on the printer are lost. We preferred to do it in this way, as we didn’t know what kind of jobs were in the queue. It could a confidential information and is better to lose the job as leave those papers in the printer,
- It has minimum impact to the print server.
The second option is running a similar script every few minutes:
get-printer | Get-PrintJob | where {$_.JobStatus -match “Error”} | Remove-PrintJob
This script has those pros and contras:
- It could be run every few minutes and printers are really many time online,
- It has more impact on the print server as the previous, but the impact is still minimum. There is not real difference in server usage.
After consulting with the customer, the best choice was the second version, running every 5 minutes. Now we have printers really with better uptime and the server is running practically on the same performance. Be careful that you run this script with an account who has permissions to delete print jobs (Print Administrator) and it will work. Anyway, if it is possible is always better to find the cause of errors and repair it. It is not always possible, but try to do it, before you use the script.
Still I am convinced that the best way to solve this type of issues is assign the second option directly to an error. When the printer is going to error, it is acknowledged as Error 372; Source: PrintService. You have just to assign a task to this error..
Thanks for sharing your thoughts. I truly appreciate your efforts and I will be waiting for your next post thank you once again.
I was looking for such a resolution. Thanks for sharing this !!!