| 
| 
| 
| #187282 - 2008-04-24 10:36 PM    Re: Move Printer Server
[Re:  ghangis] |  
| SnoopDuJour   Just in Town
 
 Registered:  2008-04-22
 Posts: 3
 | 
Gents, I'm trying to use this script and I can't for the life of me get it working... My situation is very similar here... migrating printers from serverA to serverB and I want the script to check if \\serverA\printer1 exists, if it does, map \\serverB\printer1 (same share name).  
 if someone could assist I would be muchly greatful
 
 Cheers,
 If your just changing the server name, here is a VB Script which works Perfectly for me (when the share names are the same)
 
 :VBcode
 
 Option Explicit
 Dim from_sv, to_sv, PrinterPath, PrinterName, DefaultPrinterName, DefaultPrinter
 Dim DefaultPrinterServer, SetDefault, key
 Dim spoint, Loop_Counter
 Dim WshNet, WshShell
 Dim WS_Printers
 DefaultPrinterName = ""
 spoint = 0
 SetDefault = 0
 set WshShell = CreateObject("WScript.shell")
 
 from_sv = "\\OldPrintServerName" 'This should be the name of the old server.
 to_sv = "\\NewPrintServerName" 'This should be the name of your new server.
 
 'Just incase their are no printers and therefor no defauld printer set
 ' this will prevent the script form erroring out.
 On Error Resume Next
 key = "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device"
 DefaultPrinter = LCase(WshShell.RegRead (key))
 If Err.Number <> 0 Then
 DefaultPrinterName = ""
 else
 'If the registry read was successful then parse out the printer name so we can
 ' compare it with each printer later and reset the correct default printer
 ' if one of them matches this one read from the registry.
 spoint = instr(3,DefaultPrinter,"\")+1
 DefaultPrinterServer = left(DefaultPrinter,spoint-2)
 if DefaultPrinterServer = from_sv then
 DefaultPrinterName = mid(DefaultPrinter,spoint,len(DefaultPrinter)-spoint+1)
 end if
 end if
 Set WshNet = CreateObject("WScript.Network")
 Set WS_Printers = WshNet.EnumPrinterConnections
 'You have to step by 2 because only the even numbers will be the print queue's
 ' server and share name. The odd numbers are the printer names.
 For Loop_Counter = 0 To WS_Printers.Count - 1 Step 2
 'Remember the + 1 is to get the full path ie.. \\your_server\your_printer.
 PrinterPath = lcase(WS_Printers(Loop_Counter + 1))
 'We only want to work with the network printers that are mapped to the original
 ' server, so we check for "\\Your_server".
 if LEFT(PrinterPath,len(from_sv)) = from_sv then
 'Now we need to parse the PrinterPath to get rhe Printer Name.
 spoint = instr(3,PrinterPath,"\")+1
 PrinterName = mid(PrinterPath,spoint,len(PrinterPath)-spoint+1)
 'Now remove the old printer connection.
 WshNet.RemovePrinterConnection from_sv+"\"+PrinterName
 'and then create the new connection.
 WshNet.AddWindowsPrinterConnection to_sv+"\"+PrinterName
 'If this printer matches the default printer that we got from the registry then
 ' set it to be the default printer.
 if DefaultPrinterName = PrinterName then
 WshNet.SetDefaultPrinter to_sv+"\"+PrinterName
 end if
 end if
 Next
 Set WS_Printers = Nothing
 Set WshNet = Nothing
 Set WshShell = Nothing
 |  
| Top |  |  |  |  
 
 Moderator:  Jochen, Allen, Radimus, Glenn Barnas, ShaneEP, Ruud van Velsen, Arend_, Mart
 
 | 
| 
 
| 0 registered
and 360 anonymous users online. 
 | 
 |  |