In case anybody is interested, i have completed my rough implementation of a Windows Print Server Monitoring VBS Script that will create and populate a column in BB.
It might be able to be written a little cleaner or shorter but hey, im no VBS expert...
Use freely....
Option Explicit On Error Resume Next
Dim colour, bbdelay, strDetail, strDetailAll Dim WindowsShell, objWMIService, colInstalledPrinters, BBConfigExtPath, objPrinter
'Name of test column in BB Const BBTestName = "print"
strDetail = "" strDetailAll = "" colour = "green" bbdelay = "+27"
'Complete path to the BB TMP Directory BBConfigExtPath = "c:\Program Files\BBWin\tmp"
'=============================================================================
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
'WMI Query Set colInstalledPrinters = objWMIService.ExecQuery("Select PortName,Location,Status,DetectedErrorState,Name from Win32_Printer")
'WMI Query Restriction 'If you want to not include things such as Microsoft XPS Writer or Adobe PDF Printer, put a where clause in the query above 'Example (where Name != 'Microsoft XPS Document Writer') - != means NOT EQUAL
For Each objPrinter in colInstalledPrinters 'If objPrinter.Status = "Degraded" Then
If objPrinter.DetectedErrorState = "9" Then strDetail = "&red" & " " & objPrinter.Name & " is OFFLINE" & vbCrLf & strDetail & vbCrLf strDetailAll = "<tr><td>&red " & objPrinter.Name & "</td><td>" & objPrinter.PortName & "</td><td>" & objPrinter.Location & "</td></tr>" & vbCrLf & strDetailAll colour = "red" ElseIf objPrinter.DetectedErrorState = "6" Then strDetail = "&red" & " " & objPrinter.Name & " has NO TONER" & vbCrLf & strDetail & vbCrLf strDetailAll = "<tr><td>&red " & objPrinter.Name & "</td><td>" & objPrinter.PortName & "</td><td>" & objPrinter.Location & "</td></tr>" & vbCrLf & strDetailAll colour = "red" ElseIf objPrinter.DetectedErrorState = "4" Then strDetail = "&red" & " " & objPrinter.Name & " has NO PAPER" & vbCrLf & strDetail & vbCrLf strDetailAll = "<tr><td>&red " & objPrinter.Name & "</td><td>" & objPrinter.PortName & "</td><td>" & objPrinter.Location & "</td></tr>" & vbCrLf & strDetailAll colour = "red" ElseIf objPrinter.DetectedErrorState = "8" Then strDetail = "&red" & " " & objPrinter.Name & " is JAMMED" & vbCrLf & strDetail & vbCrLf strDetailAll = "<tr><td>&red " & objPrinter.Name & "</td><td>" & objPrinter.PortName & "</td><td>" & objPrinter.Location & "</td></tr>" & vbCrLf & strDetailAll colour = "red" ElseIf objPrinter.DetectedErrorState = "10" Then strDetail = "&red" & " " & objPrinter.Name & " is Requesting Service" & vbCrLf & strDetail & vbCrLf strDetailAll = "<tr><td>&red " & objPrinter.Name & "</td><td>" & objPrinter.PortName & "</td><td>" & objPrinter.Location & "</td></tr>" & vbCrLf & strDetailAll colour = "red" ElseIf objPrinter.DetectedErrorState = "11" Then strDetail = "&red" & " " & objPrinter.Name & " shows OUTPUT BIN IS FULL" & vbCrLf & strDetail & vbCrLf strDetailAll = "<tr><td>&red " & objPrinter.Name & "</td><td>" & objPrinter.PortName & "</td><td>" & objPrinter.Location & "</td></tr>" & vbCrLf & strDetailAll colour = "red" ElseIf objPrinter.DetectedErrorState = "0" Then strDetailAll = "<tr><td>&green " & objPrinter.Name & "</td><td>" & objPrinter.PortName & "</td><td>" & objPrinter.Location & "</td></tr>" & vbCrLf & strDetailAll End If 'End IF Next
Set colInstalledPrinters = Nothing Set objWMIService = Nothing
StartDetailBuild() SetPrintFinalStatus() GetBBPath() WriteFile()
Sub StartDetailBuild() IF colour = "red" then strDetail = "&red Printer Status:" & vbCrLf & vbCrLf & strDetail & vbCrLf ElseIf colour = "green" then strDetail = "&green Printer Status: All Printers are Online and Operational" & vbCrLf & vbCrLf & strDetail & vbCrLf End If End Sub
Sub SetPrintFinalStatus() Select Case colour Case "red" strDetail = "red" & bbdelay & " " & Date & " " & Time & vbCrLf & vbCrLf & strDetail & vbCrLf Case "yellow" strDetail = "yellow" & bbdelay & " " & Date & " " & Time & vbCrLf & vbCrLf & strDetail & vbCrLf Case "green" strDetail = "green" & bbdelay & " " & Date & " " & Time & vbCrLf & vbCrLf & strDetail & vbCrLf End Select End Sub
Sub GetBBPath() Set WindowsShell = WScript.CreateObject("WScript.Shell") If IsObject(WindowsShell) Then Set WindowsShell = Nothing End Sub
Sub WriteFile() Dim oFSO, oFile Set oFSO = CreateObject("Scripting.FileSystemObject") Set oFile = oFSO.OpenTextFile(BBConfigExtPath & "\" & BBTestName , 8 , TRUE) oFile.Write strDetail oFile.Write "<table>" & vbCrLf & strDetailAll & vbCrLf & "</table>" oFile.Close If IsObject(oFSO) Then Set oFSO = Nothing End Sub