Solved

trying to automatically install standard tcp/ip printers

Posted on 2008-10-29
2
868 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

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Installations often have prerequisites, such as “Microsoft .Net framework is required for this product”. The usual implementation in MSI installations is system search for a particular registry setting representing the required prerequisite, followe…
Configuring network clients can be a chore, especially if there are a large number of them or a lot of itinerant users.  DHCP dynamically manages this process, much to the relief of users and administrators alike!
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …

760 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

20 Experts available now in Live!

Get 1:1 Help Now