Solved

trying to automatically install standard tcp/ip printers

Posted on 2008-10-29
2
869 Views
Last Modified: 2013-12-15
Hi Experts,

I am trying to connect to printers automatically on standard tcp/ip ports using a script.  I have researched this extensively and have seen several ways to do it.  The below code seemed to work well in its original state, I ran it and it installed the port and then installed Printer 1 on the port.  When  I entered my modifications, though I get errors, the most recent is Line 28 Char2 Error Genereic Failure Code 80041001 SWbemObjectEx.  I am willing to concede this may have to do with the driver which is the most current for the HP Color Laserjet 5550, not sure if it is signed.  How would I know?  Also when I unzipped it I loaded it directly to C:\HPCLJ5550.  The .inf and cab files are all in this folder.  What else do you need to know?  Help!

dim objWMIService
 
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\.\root\cimv2")
objWMIService.Security_.Privileges.AddAsString "SeLoadDriverPrivilege", True
 
 
Install "Printer Number 1", "HP Color LaserJet 5550", "C:\HPCLJ5550", "C:\HPCLJ5550\hpc5550d.inf", "172.25.8.41"
 
 
sub Install(strPrinter, strDriverName, strDriverSource, strDriverInf, strIP)
      ' Install the specified printer, including driver and port
      InstallPrinterDriver strDriverName, strDriverSource, strDriverInf
      InstallPrinterPort strIP
      InstallPrinter strPrinter, strDriverName, "IP_" & strIP
end sub
 
sub InstallPrinter(strName, strDriverName, strPortName)
      ' Install printer as detailed
      dim objPrinter : Set objPrinter = objWMIService.Get("Win32_Printer").SpawnInstance_
 
      objPrinter.DriverName = strDriverName
      objPrinter.PortName   = strPortName '"IP_172.25.8.41"
      objPrinter.DeviceID   = strName
      objPrinter.Location = ""
      objPrinter.Network = True
      objPrinter.Shared = false
      objPrinter.Put_
end sub
 
sub InstallPrinterDriver(strDriverName, strDriverSource, strDriverInf)
      ' Installs the printer driver
      dim colInstalledDrivers, objDriver, strInstalledDriverName
      
      ' First check whether the driver is installed already
      Set colInstalledDrivers =  objWMIService.ExecQuery("Select Name from Win32_PrinterDriver")
      for each objDriver in colInstalledDrivers
            strInstalledDriverName=Left(objDriver.Name, Instr(1,objDriver.Name,",")-1)
            if strInstalledDriverName=strDriverName then exit sub ' We have a match, so no need to install driver
      next
      
      ' Driver not present, so install it
      Set objDriver = objWMIService.Get("Win32_PrinterDriver")
      objDriver.Name = strDriverName
      objDriver.SupportedPlatform = "Windows NT x86"
      objDriver.Version = "3"
      objDriver.DriverPath = strDriverSource
      objDriver.Infname = strDriverInf
      objDriver.AddPrinterDriver(objDriver)
end sub
 
sub InstallPrinterPort(strIP)
      ' First check whether the port exists already
      Set colInstalledPorts =  objWMIService.ExecQuery _
            ("Select Name from Win32_TCPIPPrinterPort")
      for each objPort in colInstalledPorts
            if objPort.Name="IP_" & strIP then exit sub ' We have a result, so no need to add port
      next
 
      ' Add new printer port
      Set objNewPort = objWMIService.Get _
            ("Win32_TCPIPPrinterPort").SpawnInstance_
      objNewPort.Name = "IP_" & strIP
      objNewPort.Protocol = 1
      objNewPort.HostAddress = strIP
      objNewPort.PortNumber = "9100"
      objNewPort.SNMPEnabled = False
      objNewPort.Put_
end sub
0
Comment
Question by:bfsharp
  • 2
2 Comments
 

Author Comment

by:bfsharp
ID: 22845554
While waiting for an answer on this, I think I understand the problem.  In order to install TCP\IP printers one has to be an administrator.  The whole point of installing these printers, in such a manner, is that we have travelling staff and non-staff that transit throgh our building.  While here, they need to have print access but do not have server rights, thus they connect to printers via Standard TCP/IP Ports.  Manually configuring the ports and installing the printers is not problem at all.  The script, however, does not make the connection.  Is there a way to modify the script to ignore the administrator requirement?

Brian
0
 

Accepted Solution

by:
bfsharp earned 0 total points
ID: 22852097
Please close this question.  I did, finally figure out the problem and it has nothing to do with Administrator.  It seems that in all of my testing with various scripts trying to make this happen, one of the scripts was written to stop spooler service and then start spooler service.  Trouble was, the script didn't run far enough to restart the spooler service.  Once I manually restarted it I had no problem with the script I posted.

Thanks

Brian
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This seems to be a very common error related to the Samsung printer driver. First, this is the error we're talking about: Log: System Type: Error Event: 7000 Agent Time: 3:37:24 am 22-Apr-09 Event Time: 6:07:24 pm 21-Apr-09 UTC Source: Se…
Monitor input from a computer is usually nothing special.  In this instance it prevented anyone from using the computer.  This was a preconfiguration that didn't work.
This Micro Tutorial will give you a basic overview how to record your screen with Microsoft Expression Encoder. This program is still free and open for the public to download. This will be demonstrated using Microsoft Expression Encoder 4.
Learn how to create flexible layouts using relative units in CSS.  New relative units added in CSS3 include vw(viewports width), vh(viewports height), vmin(minimum of viewports height and width), and vmax (maximum of viewports height and width).

867 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now