1

Тема: VBS: показать только USB или LPT принтера

опрос к гуру скриптов - нужно скриптом показать только те принтера, которые подключены по USB или LPT - не нужно показывать IP-принтера (они локальные) и прочие OneNote
Я сбацал - но неверно - не понимаю почему Like - не отрабатывает:

Dim objNetwork : Set objNetwork = CreateObject("WScript.Network")
Dim strComputerName : strComputerName = objNetwork.ComputerName
On Error resume next
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" + strComputerName + "\root\CIMV2")
For Each objPRN In objService.ExecQuery("SELECT * FROM Win32_Printer")

IF objPRN.Port like "%USB%" Then
      WScript.Echo "PRN: "& objPRN.PortName & " x " & objPRN.DriverName
end if
Next

Подскажите правильное решение! Подправьте скрипт, плз! Готов и другие WMI классы использовать!
Заранее благодарен.

2

Re: VBS: показать только USB или LPT принтера

IF objPRN.Port like "%USB%" Then

like "%USB%"? Это же не запрос. >

IF Left(objPRN.Port, 3) = "USB" Then

3

Re: VBS: показать только USB или LPT принтера

z3f, попробуйте так:

Option Explicit

Dim strComputer

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemObjectEx

Dim objDictionary


strComputer = "."

Set objSWbemLocator    = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")

Set objDictionary = WScript.CreateObject("Scripting.Dictionary")

For Each objSWbemObjectEx In objSWbemServicesEx.ExecQuery("SELECT Name FROM Win32_TCPIPPrinterPort")
    objDictionary.Add objSWbemObjectEx.Name, objSWbemObjectEx.Name
Next

For Each objSWbemObjectEx In objSWbemServicesEx.ExecQuery("SELECT * FROM Win32_Printer")
    With objSWbemObjectEx
        If Not objDictionary.Exists(.PortName) Then
            WScript.Echo .PortName, vbTab, .Name', vbTab, .DriverName
        End If
    End With
Next

objDictionary.RemoveAll

Set objDictionary = Nothing

Set objSWbemLocator    = Nothing
Set objSWbemServicesEx = Nothing

WScript.Quit 0

…и прочие OneNote

Поясните.