Для получения информации об установленных принтерах HP есть много способов, но мне понадобилось получить с использованием vbs. Получить список принтеров не проблема, трудности появились при получении ip адреса. Для его получения я решил воспользоваться чтением ветки реестра для каждого порта установленных принтеров: "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\HP Standard TCP/IP Port".
В итоге получился такой скрипт:
Const HKLM = &H80000002
Const NetBase = "SYSTEM\CurrentControlSet\Control\Print\Monitors\HP Standard TCP/IP Port"
Dim objWMIService, objItem, colItems, strComputer
strComputer ="."
Set objWMIService = GetObject _
("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery _
("SELECT * FROM Win32_Printer")
Set oReg = GetObject("winmgmts:\\.\root\default:StdRegProv")
iRC = oReg.EnumKey(HKLM, NetBase, aRegKeys)
For Each objItem In colItems
sKeyName = NetBase &"\Ports\"& objItem.PortName
oReg.GetStringValue HKLM, sKeyName, "HostName", sValue
oReg.GetStringValue HKLM, sKeyName, "IPAddress", sValue2
if svalue<>"" or sValue2<>"" then
WScript.Echo objItem.DeviceID & " " & objItem.PortName & " " & sValue & " " & sValue2
end If
Next
* Заготовкой взял скрипт:
' PrinterWMI.vbs
' Sample WMI Printer VBScript to interrogate properties
' Author Guy Thomas http://computerperformance.co.uk/
' Version 2.3 - December 2010
В итоге получился такой скрипт:
Const HKLM = &H80000002
Const NetBase = "SYSTEM\CurrentControlSet\Control\Print\Monitors\HP Standard TCP/IP Port"
Dim objWMIService, objItem, colItems, strComputer
strComputer ="."
Set objWMIService = GetObject _
("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery _
("SELECT * FROM Win32_Printer")
Set oReg = GetObject("winmgmts:\\.\root\default:StdRegProv")
iRC = oReg.EnumKey(HKLM, NetBase, aRegKeys)
For Each objItem In colItems
sKeyName = NetBase &"\Ports\"& objItem.PortName
oReg.GetStringValue HKLM, sKeyName, "HostName", sValue
oReg.GetStringValue HKLM, sKeyName, "IPAddress", sValue2
if svalue<>"" or sValue2<>"" then
WScript.Echo objItem.DeviceID & " " & objItem.PortName & " " & sValue & " " & sValue2
end If
Next
* Заготовкой взял скрипт:
' PrinterWMI.vbs
' Sample WMI Printer VBScript to interrogate properties
' Author Guy Thomas http://computerperformance.co.uk/
' Version 2.3 - December 2010
Комментариев нет:
Отправить комментарий