Solved

Unmap/remap network printers with a script without Admin privileges

Posted on 2014-04-26
10
1,519 Views
Last Modified: 2014-05-10
We have to switch approximately 118 printers from one server to another. The printer names will remain the same. There are 200 users, who do not have Admin privileges on their machines, and are spread out on several floors and could be using a wide range of the 118 printers. We would like to make a switch for them as painless as possible with a single script that could be executed by each user.

Ideally I'd like a script to dynamically unmap a user's old devices then map the new ones. I know a .bat script with PrintUiEntry.dll will work to add or remove if you already know the device names. However I can't find a way to make a single script do this dynamically for each user without writing a VB executable, which they would not be able to run.

Any ideas?
0
Comment
Question by:bozworthy
  • 3
  • 3
  • 2
  • +1
10 Comments
 
LVL 25

Expert Comment

by:Mohammed Khawaja
ID: 40025138
We did the same for users at work and we wrote a script.  I will post the script next week.
0
 
LVL 31

Expert Comment

by:Gareth Gudger
ID: 40025269
If you are using Server 2008 R2 or newer domain controllers you can easily do this with Group Policies.

See the screenshot. It's very easy to do. The user does not need admin rights. Its all automated.

GPO Printers
0
 
LVL 54

Expert Comment

by:McKnife
ID: 40027740
And please keep in mind what admin privileges are needed for... NOT for mapping a printer BUT for installing the driver... and that has already happened. So remapping will need no admin rights.

Yes, I did that before.
0
Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

 
LVL 1

Author Comment

by:bozworthy
ID: 40032614
If understand this correctly it will work....but since we won't know which devices a user has mapped (they might have 5 of the 118 mapped) we would be forced to add all 118 printers to every user.  Or am I misunderstanding?
0
 
LVL 31

Expert Comment

by:Gareth Gudger
ID: 40033105
Rather than the "Create" one I have selected in the screenshot, you could do the "Update" one instead. That will only fix the ones they have.
0
 
LVL 25

Expert Comment

by:Mohammed Khawaja
ID: 40034788
From what you are telling me, the printers were moved and no where was it mentioned if new drivers were created or if the share names were changed.  What I would do is the following:
1. Have a script to interrogate all printers installed on user's pc
2. Check against a mapping file
3. Delete printer and installing the corresponding replacement one

Below is the script and the mapping file will contain a line with the old printer shared name, followed by ~ and finally the new shared printer name.

Option Explicit

Dim objNetwork, objPrinter, intDrive, intNetLetter

Dim fso, ts, ts2, sTemp, sTemp2, sPrt, sNewPrt

Dim WshNetwork, strComputer, objWMIService, colPrinters, sDefaultPrt

'Get the default Printer
strComputer = "."
Set objWMIService = GetObject ("winmgmts:\\" & strComputer & "\root\cimv2")
Set colPrinters = objWMIService.ExecQuery ("Select * From Win32_Printer where Default = TRUE")

Set fso = CreateObject("Scripting.FileSystemObject")

For Each objPrinter in colPrinters
       sDefaultPrt = objPrinter.Sharename
Next

'Get the currently mapped printers
Set objNetwork = CreateObject("WScript.Network")
Set objPrinter = objNetwork.EnumPrinterConnections
Set WshNetwork = CreateObject("WScript.Network")

Set ts = fso.CreateTextFile("c:\myprinters.txt")

For intDrive = 0 To (objPrinter.Count -1) Step 2

      intNetLetter = IntNetLetter +1

        ts.Writeline objPrinter.Item(intDrive +1)

Next

'Find matching printers and remove them

Set ts = fso.OpenTextFile("c:\myprinters.txt", 1)

Do While Not ts.AtEndOfStream

      sTemp = ts.ReadLine

      SET ts2 = fso.OpenTextFile("\\servername\sharedname\prnmapping.txt", 1)

      Do While Not ts2.AtEndOfStream

            sTemp2 = ts2.ReadLine
            sPrt = Left(sTemp2, Instr(sTemp2, "~") - 1)
            sNewPrt = Mid(sTemp2, Instr(sTemp2, "~") + 1)

            If uCase(sTemp) = uCase(sPrt) Then
                  WshNetwork.RemovePrinterConnection  sPrt
                  WshNetWork.AddWindowsPrinterConnection sNewPrt
                  'Set as the default if matches the currently mapped default printer
                  If Instr(sPrt, sDefaultPrt)> 0 Then
                        WshNetwork.SetDefaultPrinter sNewPrt
                  End If
                  Exit Do
            End If
       Loop

       ts2.close
Loop

Wscript.Quit(1)
0
 
LVL 1

Accepted Solution

by:
bozworthy earned 0 total points
ID: 40036378
Mohammed, the new print queues were set up on the new server with drivers. A user's mapping would change from \\olderserver\printer to \\newserver\printer.  I was testing a script much like above but the line WshNetWork.AddWindowsPrinterConnection sNewPrt did not add a device to my machine nor did WshNetwork.RemovePrinterConnection  sPrt remove one. Also, wouldn't a user need Admin to run that executable script?

We ended up putting the device list on a website where the user's could choose their device and run a .bat file with PrintUiEntry to add it. Then it was up to them to manually delete any old mappings.
0
 
LVL 54

Expert Comment

by:McKnife
ID: 40040818
Ok fine. Then finalize this question :)
0
 
LVL 1

Author Closing Comment

by:bozworthy
ID: 40055662
Given the admin constraint and time concerns, this is what we ended up doing.
0
 
LVL 25

Expert Comment

by:Mohammed Khawaja
ID: 40056128
Our users never had admin rights and you do not need admin rights to connect to a printer.  From what I gathered, drivers were already on users PC since you moved printers from one server to another, all that would happen is the OS would connect to the printer using already installed drivers.
0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

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

You may have a outside contractor who comes in once a week or seasonal to do some work in your office but you only want to give him access to the programs and files he needs and keep privet all other documents and programs, can you do this on a loca…
A quick guide on how to use Group Policy to create a custom power plan and set it active on Windows 7.
This Micro Tutorial will teach you how to the overview of Microsoft Security Essentials. This is a free anti-virus software that guards your PC against viruses, spyware, worms, and other malicious software. This will be demonstrated using Windows…
This Micro Tutorial will teach you how to change your appearance and customize your Windows 7 interface to your unique preference. This will be demonstrated using Windows 7 operating system.

828 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