首页 > 解决方案 > 如何修复尝试以编程方式创建打印机端口的未指定错误?

问题描述

我正在尝试使用具有 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

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

标签: vb.netwmi

解决方案


这实际上对我有用。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()
}

推荐阅读