#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 634 anonymous users online.
|
|
|