Well, okay. But I have to warn you I am no amazing coder. I'm sure there are plenty of better ways to achieve the solution. Also, I'm now being asked whether it can put the printers it's already warned about previously at the bottom of the email away from any new ones. That's gonna be a fun project.

Anyway, here's what I came up with (some personal / site details edited out):

 Code:
$x = Open(1, ".\PrinterOut.txt", 5)
$x = Open(2, ".\PrinterList.dat", 2)
$x = WriteLine(1, "The following printers are getting low on toner, please visit and assist:" + @CRLF + @CRLF)
Dim $StoreVals[6]
$EmailNeeded = 0
$PrinterIP = ReadLine(2)
While @ERROR = 0
  $Cmd = 'snmpget.exe -r:' + $PrinterIP + ' -o:.1.3.6.1.2.1.1.1.0 -q -t:10'
  $CmdResult = WshPipe($Cmd)
  $CmdResult = Join($CmdResult[0], @CRLF)
  $PModel = SubStr($CmdResult, Instr($CmdResult, "X"), (Instr($CmdResult, ";") - Instr($CmdResult, "X")))
  $Count = 0
  $Flag = 0

  ; If the device is online and the device is a Xerox machine
  If Left($CmdResult, 1) <> "%" AND $PModel <> ""
    ; Get the supported values for a printer type
    $aIniVals = Split(ReadProfileString('.\PrinterData.ini', $PModel, ''), Chr(10))
    ; Make sure the device is one of those listed in the INI file otherwise report an error
    If UBound($aIniVals) > 0
      For Each $IniVal in $aIniVals
        If $IniVal
          $Oid = ReadProfileString('.\PrinterData.ini', $PModel, $IniVal)
          $Cmd = 'snmpget.exe -r:' + $PrinterIP + ' -o:' + $Oid + ' -q -t:10'
          $CmdResult = WshPipe($Cmd)
          $CmdResult = Join($CmdResult[0], @CRLF)
          If $IniVal <> "Location"
            $Cmd = 'snmpget.exe -r:' + $PrinterIP + ' -o:' + SUBSTR($Oid, 1, 23) + "8" + SUBSTR($Oid, 25, 4) + ' -q -t:10'
            $CmdResult2 = WshPipe($Cmd)
            $CmdResult2 = Join($CmdResult2[0], @CRLF)
            $CmdResult = CDbl($CmdResult)
            $CmdResult2 = CDbl($CmdResult2)
            $StoreVals[$Count] = ($CmdResult / $CmdResult2) * 100
          Else
            $StoreVals[$Count] = $CmdResult        
          EndIf
        EndIf
      $Count = $Count + 1
      Next
    Else
      $Count = 1
      $StoreVals[$Count] = "WARNING - Printer Model Not Found : Report this to 3rd line"
    EndIf

    $PrinterText = $PrinterIP + " : " + $PModel
    If $Count > 1
      $PrinterText = $PrinterText + " : " + SubStr($StoreVals[0], 1, Len($StoreVals[0]) - 2)
      For $x = 1 to ($Count - 2)
        If $StoreVals[$x] <= 5
          $PrinterText = $PrinterText + " : " + $aIniVals[$x] + " : " + $StoreVals[$x] + "%"
          $Flag = 1
          $EmailNeeded = 1
        EndIf
      Next
    EndIf

    If $Count = 1
      $PrinterText = $PrinterText + $PrinterIP + " : " + $StoreVals[$Count]
      $Flag = 1
      $EmailNeeded = 1
    EndIf

  EndIf

  If $Count = 0
    $PrinterText = $PrinterIP + " : Device is offline (or not a Xerox device, check IP)"
    $Flag = 1
    $EmailNeeded = 1
  EndIf

  If $Flag
    $x = WriteLine(1, $PrinterText + @CRLF)
  EndIf

  $PrinterIP = ReadLine(2)
LOOP

$x = Close(2)
$x = Close(1)

If $EmailNeeded
  Shell "CMD.EXE /C C:\Scripts\blat.exe PrinterOut.txt -to blahblah@@company.com -subject " + Chr(34) + "Printers Low In Toner" + Chr(34) + " -q"
EndIf

Exit


I realise I didn't comment a lot of it so if you can unpack this code, good luck to you.

Here are the file structures that it uses (not all contents of files uploaded, these are just to give the general idea):

1. The INI file (PrinterData.ini)

 Code:
[Xerox WorkCentre 5855 v1]
Location=.1.3.6.1.2.1.1.5.0
Black=.1.3.6.1.2.1.43.11.1.1.9.1.1

[Xerox WorkCentre 5955 v1]
Location=.1.3.6.1.2.1.1.5.0
Black=.1.3.6.1.2.1.43.11.1.1.9.1.1

[Xerox Phaser 6600DN]
Location=.1.3.6.1.2.1.1.6.0
Cyan=.1.3.6.1.2.1.43.11.1.1.9.1.1
Magenta=.1.3.6.1.2.1.43.11.1.1.9.1.2
Yellow=.1.3.6.1.2.1.43.11.1.1.9.1.3
Black=.1.3.6.1.2.1.43.11.1.1.9.1.4

[Xerox WorkCentre 6605DN]
Location=.1.3.6.1.2.1.1.6.0
Cyan=.1.3.6.1.2.1.43.11.1.1.9.1.1
Magenta=.1.3.6.1.2.1.43.11.1.1.9.1.2
Yellow=.1.3.6.1.2.1.43.11.1.1.9.1.3
Black=.1.3.6.1.2.1.43.11.1.1.9.1.4
etc


2. The list of printers (PrinterList.dat)

 Code:
10.140.192.129
10.140.192.134
10.140.192.135
10.140.192.139
10.140.192.143
10.140.192.180
10.140.192.202
etc




Edited by kelp7 (2015-12-17 10:33 AM)