Audience

 Windows Management Instrumentation (WMI) is an industry-standard from Microsoft for the management of hardware devices, including Zebra   barcode  scanners, in a Windows enterprise computing environment. This blog provides step-by-step guidelines on updating barcode scanner firmware   with Windows Management Instrumentation (WMI) using a VBScript. 

 Guide

    1. Open your favorite text editor, Visual Studio Code, Notepad++, etc.

NOTE Microsoft Visual Studio Code is recommended as it is rich with VBScript supporting extensions. Download the latest version via this link: https://code.visualstudio.com/.

   

   2. Define the host, localhost, or the remote PC.

   A string can define multiple host IPs, including the localhost.

' Remote IP, or the localhost. Define all the IPs in the following Array.
arrComputers = Array("127.0.0.1")

    3. Retrieve an instance of the class.

   The GetObject method is called by WMI to retrieve an instance of a class. Query object that indicates the set of properties to be populated, as       requested by a call to GetObject. 

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")

    4. Executes a WQL query to retrieve objects.

   The ExecQuery method is called by WMI to process a WMI Query Language (WQL) query. Pointer to the context object for this call. This value contains     any IWbemContext properties specified by the client. Also, this pointer must be used as a parameter to any calls back into WMI. 

Set zebraScanners = objWMIService.ExecQuery("SELECT * FROM Symbol_BarcodeScanner", "WQL", _ wbemFlagReturnImmediately + wbemFlagForwardOnly)

    5. Query Zebra scanners and filter the relevant by the scanner properties.

    Set the absolute file path to the firmware DAT file and invoke the UpdateFirmware method. For Each objScanner in Zebra Scanners

If InStr(objScanner.PartNumber, "MP7") then    ‘ Filter by the model number
        ' Set the firmware DAT file path and invoke the method
        Set retVal = objScanner.UpdateFirmware(" ")
  ‘ Handle the return status
if retVal <> 0 then
            Wscript.Echo "     Method Invocation Failed!"
        Else
            Wscript.Echo "     Firmware update started."
        End if
    End if
Next

    6. Firmware update events and launch new firmware in the scanner.

   Listen to all the firmware update events and start the new firmware once the session ends. 

Do While(True)
Set objEv = objEvents.NextEvent(10000)    'General timeout to wait
    
    If (objEv.Type = 1) Then
        Wscript.Echo "Session Started."
    End If
                
    If (objEv.Type = 2) Then 
        Wscript.Echo "Started downloading software component: " & objEv.SoftwareComponent 
    End If
        
    If (objEv.Type = 12) Then
        Wscript.Echo "Ended downloading software component: " & objEv.SoftwareComponent
    End If 
            
    If (objEv.Type = 3) Then 
        Wscript.Echo "Progress: " & objEv.Progress
    End If
        
    If(objEv.Type = 11) Then 
        Wscript.Echo "Session Ended."
                        
        Set zebraScanners  = objWMIService.ExecQuery("SELECT * FROM Symbol_BarcodeScanner", "WQL", _
                                          wbemFlagReturnImmediately + wbemFlagForwardOnly)
           For Each objScanner in zebraScanners 
            'Start new firmware if the scanner serial number matches the session end event serial number
            If (objScanner.SerialNumber = "MP7") Then 
                Wscript.Echo
                    WScript.Echo "     Starting new FW at " & Time
                Wscript.Echo
                    objScanner.StartNewFirmware()
                    
                'Adjust pause for firmware start as needed
                Exit Do         
            End If     
        Next
    End If
        
    If (objEv.Type = 100) Then 
        Wscript.Echo "Error occurred. Firmware update aborted."
        Exit Do         
    End If 
Loop

  All the supported properties by the Zebra WMI Provides are listed on the Developer Guide. Refer to the latest version of the document published     on  Support and Downloads: Scanner SDK for Windows.