VBScript,仅删除精确字符串

VBScript,仅删除精确字符串,vbscript,Vbscript,您好,我有下面的VBscript删除打印机,但当我运行它时,它也删除只是佳能IR70 Dim aPrinterModels(2) aPrinterModels(0)="Canon IR70 (Cpoy 1)" aPrinterModels(1)="Canon IR70 (Cpoy 2)" aPrinterModels(2)="Canon IR70 (Cpoy 3)" for each printer in aPrinterModels RemovePrinterAndPort(prin

您好,我有下面的VBscript删除打印机,但当我运行它时,它也删除只是佳能IR70

Dim aPrinterModels(2)
aPrinterModels(0)="Canon IR70 (Cpoy 1)"
aPrinterModels(1)="Canon IR70 (Cpoy 2)"
aPrinterModels(2)="Canon IR70 (Cpoy 3)"

for each printer in aPrinterModels
    RemovePrinterAndPort(printer)
next

Sub RemovePrinterAndPort(strModelMask)
    on error resume next
    msiMessageTypeError = &H01000000 
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
    'objWMIService.Security_.Privileges.AddAsString "SeLoadDriverPrivilege", True
    Set colInstalledPrinters =  objWMIService.ExecQuery("Select * from Win32_Printer where name like'" & strModelMask & "%'") 
    if colInstalledPrinters.count<>0 then   
        For each objPrinter in colInstalledPrinters
            Set colInstalledPorts =  objWMIService.ExecQuery("Select * from Win32_TCPIPPrinterPort where name like '" & objPrinter.PortName & "'")
            objPrinter.Delete_
            For Each objPort in colInstalledPorts 
                objPort.Delete_
            Next
        Next
    end if
    Set colInstalledPrinters = Nothing
    Set colInstalledPorts = nothing 
    Set objWMIService = Nothing
End Sub
我怎样才能让它只删除aPrinterModels中的确切字符串

非常感谢。

我无法尝试wmi查询与您的场景进行比较,但我会使用=比较,如下所示:

Set colInstalledPrinters = objWMIService.ExecQuery( _
  "Select * from Win32_Printer where name = '" & strModelMask & "'")
只有在假定复制的打印机实例的端口与原始打印机端口不同的情况下,才会执行带有objPort.Delete的代码段。 在更可能的情况下,所有打印机实例的原始和副本都使用相同的端口:使用objPort.Delete修改代码段,以有条件地执行删除操作,或完全抑制该操作,并将未使用的端口作为独立任务删除:

for each printer in aPrinterModels
    RemovePrinter(printer)
next
RemoveUnusedPorts

Sub RemovePrinter(strModelMask)
    'on error resume next
    msiMessageTypeError = &H01000000 
    Set objWMIService = GetObject( _
      "winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colInstalledPrinters = objWMIService.ExecQuery( _
    "Select * from Win32_Printer where name = '" & strModelMask & "'") 
if colInstalledPrinters.count<>0 then
    For each objPrinter in colInstalledPrinters
        ' wscript.Echo "Printer to Delete " & objPrinter.Name
        objPrinter.Delete_
    Next
end if
Set colInstalledPrinters = Nothing
Set objWMIService = Nothing
End Sub

Sub RemoveUnusedPorts
   ' code snippet to remove unused ports here
End Sub

如果要匹配精确的字符串,为什么不使用=来代替like?我有许多不同的打印机名称36,我想用它们来匹配,那么有没有办法只使用=来获得精确的字符串名称?