I work for a company that has approximately 3,000 PC's and approximately 1,500 printers. Currently the method to install a printer is rather manual, and we're looking at automating the process. There are certain restrictions that apply to this question:
- Must work on Windows 7 and Windows 10
- Solution cannot be a print server
Apart from that, I have a few personal preferences as to the solution:
- Preferably does not require administrative rights to the PC
- Preferably can be managed remotely, i.e. a change to a printer model can be replicated to all users on the domain
- Preferably little scripting needed, as we plan on getting end users to operate this tool.
The current process we're using is to run the following command (or creating a batch script), but this is definitely not a valid solution:
rundll32 printui.dll,PrintUIEntry /ia /m "Kyocera FS-4100DN KX" /f "\\share\xfer\PRTscript\_drivers\KXDriver\32bit\OEMsetup.inf"
This is not a valid solution as:
- We can not replicate changes to the clients (unless we house the 'script' on a share
- It requires administrative rights to install the printers
- It is a manual task, and fails to distinguish 32 from 64 bit (or at least, it must cater for both)
Now, I know we can use Group Policies option to deploy printers, but that is reliant on two things:
- The OU of the business (or at least, security group) being correct and;
- The PC's in question are getting Group Policy (they should)
And yes, I know Group Policy matches all my requirements AND preferences, but I just want to look at my options before needing to tidy up my OU (and sub-ou, security groups and existing policies) - in the end GPO would be the wisest solution, but I want a short-term tool whilst I work on this.
So perhaps, I thought, we could use a simple Visual Basic Script - but again, this requires a lot of manual editing and the only way I can think to automate this would be to deploy via Group Policy:
Set WshNetwork = CreateObject("WScript.Network") PrinterPath = "\\Server\Printer" PrinterDriver = "PrinterDriver" WshNetwork.AddWindowsPrinterConnection PrinterPath, PrinterDriver WshNetwork.SetDefaultPrinter "\\Server\Printer"
The next theory I can rule out would be to use PrintBRM