Skip to main content

How to check print queue with PowerShell


Checking print queue manually is quite an easy task for an IT guy but of course for some  users; it is a hard time for them trying to figure out why the printer does not print their documents when they had already click as many as they can click.

As they odds say, that “Patience is a virtue”.  In the digital world, patience indeed is a virtue. Users nowadays, their imagination is far beyond the technology.

They expect things to do in their own way, not how the machine was intended or designed to be.

So much for the drama, let’s get to PowerShell track.

PowerShell provides an easy and smart way to check print queue without any hassles.

Easy and smart way, because two lines alone will have an output that is quite informative.

Print jobs that are stuck in the print queue are easy to clear when it’s only a few of them.

Just like in the real world, when the queue is long is quite frightening to queue when time is a priority.

How the print queue works are same in the real world, it also takes a priority number.

The first print job will take the first priority; the second print job has to follow the first one and the rest of the print jobs that are stuck have to be in sequence, thus the last print job will take the highest number.

Or basically, the FIFO strategy, first in first out.

Let’s take an example that a particular printer has gone offline for whatever reason.

But some users are not aware that the printer has gone offline, so they still send print jobs.

Print queue will be like:

Document1 – User1  --- first print job stuck on the queue priority number is  “0”
Document1 – User1   --- second print job stuck on the queue priority number is  “1”
Documentx – User2   ---  third print job stuck on the queue priority number is  “2”
Document xx – User2 --- fourth print job stuck on the queue priority number is  “3”
Excel01 – User01 --- fifth  print job stuck on the queue priority number is  “4”
Excel02 – User01 --- sixth  print job stuck on the queue priority number is  “5”

But of course, those priority numbers (or job id) is not visible to the user nor can it be seen on windows explorer.

Those numbers are important to PowerShell if there’s a need to remove print queues in any particular sequence.

As soon as the print queue is removed, the numbering order will also change.  But the rule still applies the last print job will take the highest number.

So if “Documentxx – User2” is taken out from the print queue.
Excel01 – Use01 – will have priority number “3”
Excel02 – User02 – will have priority number “4”

Basically, the number will depend on how many print queues are stuck.

How to prove or do a testing with this using PowerShell?

Well, don’t do this on your “print server” or in your production environment.

It can simply be done on a workstation, change the IP Address of the network printer to something else to an IP Address that is not being used by any device.

But make sure it’s not a shared printer and no user is using or connecting to it.

So on your own workstation; change the IP Address of your default printer to an IP Address that is not used.

So when you try to print, print jobs will be stuck in the print queue.  
                   
Here’s an example of a PowerShell to check stuck print queue’s:

PS D:\> $PrintJobs = Get-WmiObject Win32_PrintJob
write-host $PrintJobs.name
Production_Line_1, 39 Production_Line_1, 40 Production_Line_1, 41 Production_Line_1, 43 Production_Line_1, 44

From the above output, there are 5 print queues stuck and the number is in sequence from 39 to 44, but the above output only shows the printer name and the sequence number.

Below is a PowerShell command that will lists the document file name that are stuck:

PS D:\> $PrintJobs = Get-WmiObject Win32_PrintJob
write-host $PrintJobs.document
untitled - Notepad 2 - Notepad untitled - Notepad 3 - Notepad untitled - Notepad 4 - Notepad untitled - Notepad 1 - Notepad untitled - Notepad 5 – Notepad

This command below will show more details:

Get-WmiObject -namespace root\cimv2 -class win32_printjob

Screen shot of  documents pending for printing:

  



To delete a specific queue number for the print job, type this PowerShell code:

This will delete the 4th  item on  print queue.
PS D:\> $PrintJobs = Get-WmiObject Win32_PrintJob
$Printjobs.item(4).delete()

This will delete the first   item on  print queue.
PS D:\> $PrintJobs = Get-WmiObject Win32_PrintJob
$Printjobs.item(0).delete()


Other PowerShell commands:
PS D:\> $PrintJobs = Get-WmiObject Win32_PrintJob
write-host $PrintJobs.__SERVER

PS D:\> $PrintJobs = Get-WmiObject Win32_PrintJob
write-host $PrintJobs.JobStatus

PS D:\> $PrintJobs = Get-WmiObject Win32_PrintJob
write-host $PrintJobs.Size

PS D:\> $PrintJobs = Get-WmiObject Win32_PrintJob
write-host $PrintJobs.Owner

PS D:\> $PrintJobs = Get-WmiObject Win32_PrintJob
#write-host $PrintJobs.Delete()
Foreach-Object { $_.Delete() }

Get-WmiObject -namespace root\cimv2 -class win32_printerconfiguration

Get-WmiObject -namespace root\cimv2 -class win32_printer
 

To manually delete a print job, just double-click on the printer icon to open the print queue window and right click on the document to delete, pause or restart the print job.

See image below:


Cheers..Hope it helps..Enjoy  :)


check out labels below for more PowerShell.

=========================

Comments

Popular posts from this blog

Notepad++ convert multiple lines to a single line and vice versa

Notepad++ is an awesome text editing tool, it can accept regex to process the text data. If the data is in a “.csv” format or comma separated values which is basically just a text file that can either be opened using a text editor, excel or even word. Notepad++ can process the contents of the file using regex. Example if the data has multiple rows or lines, and what is needed is to convert the whole lines of data into a single line. Notepad++ can easily do it using regex. However, if the data is on a single line and it needs to be converted into multiple lines or rows then regex can also be used for this case. Here’s an example on how to convert multiple rows or lines into a single line. Example data: Multiple rows, just a sample data. Press Ctrl+H, and  on "Find what" type: [\r\n]+ and on "Replace with" type with: , (white space) --white space is needed if need to have a space in between the data. See image below, "Regular Expression" must be se

WMIC get computer name

WMIC get computer model, manufacturer, computer name and  username. WMIC is a command-line tool and that can generate information about computer model, its manufacturer, its username and other informations depending on the parameters provided. Why would you need a command line tool if there’s a GUI to check? If you have 20 or 100 computers, or even more. It’s quite a big task just checking the GUI to check the computer model and username. If you have remote computers, you need to delegate someone in the remote office or location to check. Or you can just write a batch file or script to automate the task. Here’s the code below on how get computer model, manufacturer and the username. Open an elevated command prompt and type:     wmic computersystem get "Model","Manufacturer", "Name", "UserName" Just copy and paste the code above, the word “computersystem” does not need to be change to a computer name. A

How to check office version from command line

The are quite a few ways to check office version it can be done via registry, PowerShell or VBScript and of course, good old command line can also do it. Checking Windows office version whether it is Office 2010, Office, 2013, Office 2016 or other version is quite important to check compatibility of documents; or just a part of software inventory. For PowerShell this simple snippet can check the office version: $ol = New-Object -ComObject Excel.Application $ol . Version The command line option will tell you where’s the path located; the result will also tell whether office is 32-bit, 64-bit and of course the version of the office as well. Here’s the command that will check the office version and which program directory the file is located which will tell whether it’s 32-bit or 64-bit. Command to search for Excel.exe: DIR C:\ /s excel.exe | find   /i "Directory of"  Above command assumes that program files is on  C: drive. Sample Outpu