如何解决尝试通过编程方式创建打印机端口的未指定错误?

时间:2019-06-11 15:16:51

标签: vb.net wmi

我正在尝试使用具有IPAddress的csv文件创建100个打印机端口。我正在使用VB 2008遍历此文件,然后调用一个函数来创建端口。第一个端口可以很好地创建,但是当程序获得第二个地址并将其传递给函数时,将得到未指定的错误。

调用函数
     MakePort(“ IP_”&ln,ln)

Private Function MakePort(ByVal lPrinterName As String, ByVal _      lHostAddress As String)
    Dim res As Boolean = False
    Dim objWMIService As WbemScripting.SWbemServices = GetObject("winmgmts:")
    Dim objNewPort = objWMIService.Get("WIN32_TCPIPPrinterPort").SpawnInstance_
    Try
        objNewPort.Name = lPrinterName
        objNewPort.Protocol = 1
        objNewPort.HostAddress = lHostAddress
        objNewPort.PortNumber = "6101"
        objNewPort.SNMPEnabled = False

        objNewPort.Put_()
        res = True
    Catch ex As Exception
        res = False
        MsgBox(ex.Message)
    End Try
    objNewPort.Name = ""
    objNewPort.Protocol = ""
    objNewPort.HostAddress = ""
    objNewPort.PortNumber = ""

    objNewPort = Nothing
    objWMIService = Nothing


    Return res
End Function

在线objNewPort.Name = lPrinterName在第二遍是发生未指定错误的地方。 希望通过不手动输入端口来节省时间

1 个答案:

答案 0 :(得分:1)

这实际上对我有用。 Powershell脚本。

$PrinterList=get-content C:\scripts\printers.csv 
FOREACH ($ip in $PrinterList) {   
   Print $I $port=[wmiclass]"Win32_TcpIpPrinterPort" 
   $port.psbase.scope.options.EnablePrivileges=$true 
   $newPort=$port.CreateInstance() 
   $newport.name="$ip" 
   $newport.Protocol=1 
   $newport.HostAddress=$ip 
   $newport.PortNumber="6101" 
   $newport.SnmpEnabled=$false 
   $newport.Put()
}