Solved

How do I install printer and add additional tray under install options using VBS?

Posted on 2008-10-22
2
711 Views
Last Modified: 2012-05-05
My company is getting a new model of Multi-Function-Printers: Lexmark X646e.  I am having to install them on multiple floors for hundreds of people.  I have a VBS install script that installs the printer and uses the latest driver.  There is one problem.  The print driver install does not automatically sense the additional 500 sheet trays Installed with the printer.

You can manually add the additional tray on each PC via the "Install Options" tab under printer properties, but I would like to have this done automatically through the script.

These are Windows XP Pro clients, SP2.  I have attached my current code.  

Any Ideas?
'Option Explicit

On Error Resume Next

Set objNetwork = CreateObject("WScript.Network")

Set objShell = CreateObject("WScript.Shell")
 

'**************************************

'* Define Constants & Global Variables

'**************************************

Dim objDomainUser, objNetwork, objShell, strComputer, colDrives, i

Dim objWMI, objNewPort, strPrinterHost, strPrinterName, strPrinterDriver, strUserName, strPrinterDriverLocation, strPrinterDriverInfFile
 
 
 

'
 

'****Printer Lexmark646e*****************

Strcomputer ="."

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

objWMI.Security_.Privileges. _

    AddAsString "SeLoadDriverPrivilege", True

Set colInstalledPrinters = objWMIService.ExecQuery("Select * from Win32_Printer where DeviceID = 'PrinterLX'")                                                                                             

For Each objPrinter in colInstalledPrinters 

objPrinter.Delete_

Next

' Put the hostname of the printer here

strPrinterHost = "PrinterLX"

' Put the name of the printer here

strPrinterName = "PrinterLX"

Set objShell = CreateObject("WScript.Shell")

' Create the printer port

Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

objWMI.Security_.Privileges. _

    AddAsString "SeLoadDriverPrivilege", True

Set objNewPort = objWMI.Get("Win32_TCPIPPrinterPort").SpawnInstance_

objNewPort.Name = "IP_" & strPrinterHost

objNewPort.Protocol = 1

objNewPort.HostAddress = strPrinterHost

objNewPort.PortNumber = "9100"

objNewPort.SNMPEnabled = False

objNewPort.Put_
 
 

objshell.run "RUNDLL32 PRINTUI.DLL,PrintUIEntry /if /b ""PrinterLX""" & " /f " & """\\ServerShare\Printers\prdrivers\lexmarkx646\win_2kxp\LMABC2DA.INF""" & " /r " & """ip_PrinterLX""" & " /m " & """Lexmark X646e""",,True
 
 

'

Open in new window

0
Comment
Question by:marktgeorge
  • 2
2 Comments
 

Accepted Solution

by:
marktgeorge earned 0 total points
ID: 22991271
I figured it out with the help of the lexmark provided utility that automates installs using the proprietary lexmark install software scripts.  However I will say it is much simpler to administer and change when using a blend of the two (use vbs to create printer and printer ports and use lexmark for driver customization).  You can call the lexmark utility from your vbs scripts.  However, there are some shortcomings on the switches used by lexmark's executable.  Yes, the lexmark utility also allows for remote installs on multiple pcs, but it requires hard coded username and password for install rights.  In my organization, that is not an option - perversely strict security requirements!
0
 

Author Comment

by:marktgeorge
ID: 22991328
Use the above code to create the printer object and port, then call Lexmarks install utility(in the vbs code) and Lexmark custom created answer file to install the customized driver complete with tray and other add-on options you specified.   The Lexmark software will come with the printer.

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

Suggested Solutions

Unlike scripting languages such as C# where a semi-colon is used to indicate the end of a command, Microsoft's VBScript language relies on line breaks to determine when a command begins and ends. As you can imagine, this quickly results in messy cod…
This is pretty cool.  The purpose of this VB Script is to help you document where JAR (Java ARchive) files and specifically java class files are located so that you can address issues seen with a client or that you can speak intelligently with a dev…
This Micro Tutorial will teach you how to censor certain areas of your screen. The example in this video will show a little boy's face being blurred. This will be demonstrated using Adobe Premiere Pro CS6.
In this video I am going to show you how to back up and restore Office 365 mailboxes using CodeTwo Backup for Office 365. Learn more about the tool used in this video here: http://www.codetwo.com/backup-for-office-365/ (http://www.codetwo.com/ba…

895 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

12 Experts available now in Live!

Get 1:1 Help Now