Option Explicit Dim arrStatus Dim blnDefault, blnPaused Dim intJobs, intStatus Dim colPrinters, colPrintJobs, objItem, objWMIService Dim strPrinter arrStatus = Array( "Script Error", "Other", "Unknown", "Idle", "Printing", "Warmup", "Stopped Printing", "Offline", "Paused", "Error", "Busy", "Not Available", "Waiting", "Processing", "Initialization", "Power Save", "Pending Deletion", "I/O Active", "Manual Feed" ) With WScript.Arguments If .Count <> 1 Then Syntax If .Named.Exists( "Default" ) Or .Named.Exists( "D" ) Then blnDefault = True Else blnDefault = False If .Unnamed.Count <> 1 Then Syntax strPrinter = .Unnamed( 0 ) End If End With Set objWMIService = GetObject("winmgmts://./root/CIMV2") Set colPrintJobs = objWMIService.ExecQuery( "SELECT * FROM Win32_PrintJob WHERE Name LIKE '" & strPrinter & ", %'", "WQL", 48 ) intJobs = 0 For Each objItem In colPrintJobs intJobs = intJobs + 1 Next If blnDefault Then Set colPrinters = objWMIService.ExecQuery( "SELECT * FROM Win32_Printer WHERE Default=TRUE", "WQL", 48 ) Else Set colPrinters = objWMIService.ExecQuery( "SELECT * FROM Win32_Printer WHERE DeviceID='" & strPrinter & "'", "WQL", 48 ) End If For Each objItem In colPrinters intStatus = objItem.ExtendedPrinterStatus strPrinter = objItem.DeviceID WScript.Echo "Printer : " & strPrinter WScript.Echo "Print Jobs : " & intJobs WScript.Echo "Status : " & arrStatus( intStatus ) If objItem.ExtendedPrinterStatus <> 8 Then ' Not Paused WScript.Echo "Pause printing . . ." objItem.Pause() blnPaused = True End If Next If blnPaused Then Do Until intStatus = 8 WScript.Echo "Wait . . ." WScript.Sleep 1000 Set colPrinters = objWMIService.ExecQuery( "SELECT * FROM Win32_Printer WHERE DeviceID='" & strPrinter & "'", "WQL", 48 ) For Each objItem In colPrinters intStatus = objItem.ExtendedPrinterStatus WScript.Echo "Status : " & arrStatus( intStatus ) Next Loop End If Set colPrinters = Nothing Set objWMIService = Nothing Sub Syntax Dim strMsg strMsg = vbCrLf _ & "PausePrinting.vbs, Version 1.00" _ & vbCrLf _ & "Pause printing for the specified printer." _ & vbCrLf & vbCrLf _ & "Usage: CSCRIPT PausePrinting.vbs //NoLogo printer" _ & vbCrLf & vbCrLf _ & "Where: ""printer"" is either /D (default printer) or the printer name" _ & vbCrLf _ & " (use doublequotes if the printer name contains spaces)" _ & vbCrLf & vbCrLf _ & "Written by Rob van der Woude" & vbCrLf _ & "http://www.robvanderwoude.com" WScript.Echo strMsg Wscript.Quit 1 End Sub