A couple of years a go I wrote a script for a customer to monitor his backups. The advertorial of the backup tool advertised that it was monitorable with WMI – Windows Management instrumentation. The customer had already an installation of Nagios, the thing he wanted was a plugin to produce a warning if the backups failed current day, and an error if it failed two days in a row.
Because the nagios backup-plugin is a bit too specific, I made a simple WMI scripting example in Visual Basic Script that lists the current printers installed.
WMI works with paths that contain classes which you can reference from VBS. The easiest way to find a path to a WMI class is with an WMI explorer, for example WMI Explorer by CodePlex – https://wmie.codeplex.com/.
Screenshot WMI explorer
The object for listing the printers is ‘Win32_Printer’. All WMI objects have API reference documentation in the MSDN - Microsoft Developer Network. The reference for this object can be found @ https://msdn.microsoft.com/en-us/library/aa394363(v=vs.85).aspx
With the wmi explorer, you can see that the path is – \\TRATZ5V5\ROOT\CIMV2 – and with the API reference we know what properties are available. With this information the vbscript kan be written,
'' GetObject() returns SWbemServicesEx - https://msdn.microsoft.com/en-us/library/aa393854(v=vs.85).aspx
'' the computername (TRATZV5) can be replaced by a dot, to use the current system
Set objService = GetObject("winmgmts:\\.\root\cimv2")
'' ExecQuery() returns SWbemObjectSet - https://msdn.microsoft.com/en-us/library/aa393762(v=vs.85).aspx
Set items = objService.ExecQuery("Select * from Win32_Printer")
'' show printernames
For Each objItem in items
WScript.Echo "Printer name: " + objItem.DeviceID
Next
'' Example of showing only the first listed printer
If items.Count > 0 Then
Script.Echo "Name of first printer: " & items.ItemIndex(0).DeviceID
End If
The script can be started from the dos prompt in console mode with cscript,
cscript //nologo listprinters.vbs
Win32 mode,
wscript listprinters.vbs
Gerelateerd
27-06-2016 | Java JNI and Windows messages |
13-06-2016 | Introduction to Angular 2, a hello world example |