Simple Print Queue Monitor - Powershell
its taking me a long time to get back to this... been super busy in work which is always a good thing!
here is some sample code which will allow you to create a very simple print queue monitor and log the details out to a csv file for further manipulation...
This is a powershell script which will monitor the print queue and log the data (Owner, Date and Queue) to a Log File.
This Code is in no way affliated to Microsoft and Therefor by using this code Microsoft accepts no liability.
.\PrinterQueueMonitor.ps1 -computername printsrv01 -timer 10
param ([parameter(mandatory=$true)] [string]$computername,[parameter(mandatory=$true)] [int]$timer,$inputpath)
$tester = test-path $path
#capture the current Print Job Queue
$capture = Get-WmiObject $wmi
#Capture the current time / date stamp
write-host "." -NoNewline
$date = get-date
#process all the jobs in the queue
foreach ($capt in $capture)
#Create a new object to help us output the format correctly
$outputobj = New-Object psobject
#Add the values and names for exporting the information later on
Add-Member -InputObject $outputobj -MemberType NoteProperty -Name Date -Value $date
Add-Member -InputObject $outputobj -MemberType NoteProperty -Name Queue -Value $capt.Name
Add-Member -InputObject $outputobj -MemberType NoteProperty -Name Owner -Value $capt.owner
if ($append -eq $true)
#export to a csv for log creation and manipulation later on
$outputobj |export-csv $logpath -Append
$outputobj |export-csv $logpath -Force
#stop processing for a period of time
write-host "Welcome To The Print Queue Monitor Script" -fore Green -back black
write-host "This Code is Posted as is and no support from Microsoft will be given for this code" -Fore green -back black
$wmiclass = "Win32_PrintJob"
$logdir = $env:USERPROFILE + "\Desktop\PrintJob\"
$testdir = testexist $logdir
#Create the Directory if it does not exist
if ($testdir -eq $false)
New-Item -ItemType directory -path $logdir
#Generate the Log File name
$logfile = $computername + "_PrintJobLog.txt"
$logs = $logdir + $logfile
#Test if the log exists, append to existing log file if it exists
$testfile = testexist $logs
if ($testfile -eq $true)
$append = $true
$append = $false
#create reference for infinite loop
$nolimit = 0
#begin infinite loop
write-host "Press CTRL-C at any point to stop Data Capture" -fore yellow -back black
write-host "Check $logs to review print queue jobs and owners" -fore yellow -back black
write-host "Beginning Capture...." -fore green -back black
while ($nolimit -eq 0)
capturewmi $wmiclass $logs $timer