Page 1 of 1 1
Topic Options
#183410 - 2007-12-07 11:26 PM Rename Print Server
Gargoyle Offline
MM club member
*****

Registered: 2004-03-09
Posts: 1597
Loc: Valley of the Sun (Arizona, US...
Okay before asking here I borrowed the following code from someone here (sorry don't recall and can't find again the thread I took it from), and this would be great if I only had 1 printserver, I have 3 and all of them are being replaced by two new ones.

To complicate the issues we want to seperate the printers on the two new server by Even and Odd. All printers are numerically named.

The code that I have been trying to modify is....

 Code:
Break ON

$gNull=SetOption("Explicit","ON")

$gNull=SetOption("ASCII","ON")

$gNull=SetOption("WrapAtEOL","ON") 

Global $sLogFilePath 

Dim $sDelimiterDim $sOldServer,$sNewServer

Dim $sOldPrefix,$sNewPrefix,$sNulPrefix

Dim $sDefaultPrinterKey,$sDefaultPrinterEntry,$sPrintersDim $iIndex

Dim $sPrinterKey,$sPrinterServer,$sPrinterShare 

Dim $sPrintersToMove,$sPrintersToAddDim $sDefaultPrinter 

; Array seperator

$sDelimiter="|" 

; Log file path - set to null to disable logging to a file.

$sLogFilePath=@HOMESHR+"\"+"PrinterMove.log" 

; Print server definitions.

$sOldServer="OLDSERVERNAME"$sNewServer="NEWSERVERNAME" 

; Printer registry keys

$sDefaultPrinterKey="HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows"

$sDefaultPrinterEntry="Device"

$sPrinters="HKCU\Printers\Connections" 

; Get default printer information

$sDefaultPrinter=Split(ReadValue($sDefaultPrinterKey,$sDefaultPrinterEntry),",")[0]

$sPrinterServer=Split($sDefaultPrinter,"\")[2]

$sDefaultPrinter=Split($sDefaultPrinter,"\")[3] $iIndex=0

$sPrinterKey=EnumKey($sPrinters,$iIndex)

While Not @ERROR        $sPrinterServer=Split($sPrinterKey,",")[2]

        $sPrinterShare=Split($sPrinterKey,",")[3]

        Select

        Case $sPrinterServer=$sNewServer

                ; No action required

        Case $sPrinterServer=$sOldServer

                $sPrintersToMove=$sPrintersToMove+$sDelimiter+$sPrinterShare

        Case "UnknownPrintServer"

                udfLog("WARNING: Print server "+$sPrinterServer+" not recognised for printer "+$sPrinterName)

        EndSelect       $iIndex=$iIndex+1       $sPrinterKey=EnumKey($sPrinters,$iIndex)

Loop

 ; Delete printers being moved.

For Each $sPrinterShare In Split($sPrintersToMove,$sDelimiter)

        If $sPrinterShare

                If DelPrinterConnection("\\"+$sOldServer+"\"+$sPrinterShare)

                        udfLog("Error "+@ERROR+" deleting printer "+"\\"+$sOldServer+"\"+$sPrinterShare)

                Else                    udfLog("Printer "+"\\"+$sOldServer+"\"+$sPrinterShare+" deleted OK")

                EndIf

        EndIf

Next 

; Add printers at new destination.

For Each $sPrinterShare In Split($sPrintersToMove,$sDelimiter)

        If $sPrinterShare

                If AddPrinterConnection("\\"+$sNewServer+"\"+$sPrinterShare)

                        udfLog("Error "+@ERROR+" connecting printer \\"+$sNewServer+"\"+$sPrinterShare)

                Else

                        udfLog("Printer \\"+$sNewServer+"\"+$sPrinterShare+" connected OK")

                        ; Set up default printer

                        If $sDefaultPrinter=$sPrinterShare

                                If SetDefaultPrinter("\\"+$sNewServer+"\"+$sPrinterShare)

                                        udfLog("Error "+@ERROR+" setting default printer \\"+$sNewServer+"\"+$sPrinterShare)

                                Else

                                        udfLog("Printer \\"+$sNewServer+"\"+$sPrinterShare+" set as default OK")

                                EndIf

                        EndIf

                EndIf

        EndIf

Next

  Exit 1.

 ; Log changes and errors.

Function udfLog($sMessage)

        $sMessage=@DATE+" "+@TIME+" ["+@WKSTA+"] "+$sMessage+@CRLF

        $sMessage

        If $sLogFilePath

                Dim $fh

                $fh=FreeFileHandle()

                If Open($sLogFilePath,1+4)

                        "**ERROR** Cannot open log file "+$sLogFilePath+" for writing!"+@CRLF

                Else

                        $gNull=WriteLine($fh,$sMessage)

                        $gNull=Close($fh)

                EndIf

        EndIf

EndFunction


In the end it should maintian the default printer setting, and it should assign all odd numbered printers to server01 and all even numbered printers to server02.

Thanks all


Edited by Gargoyle (2007-12-07 11:27 PM)
Edit Reason: typo's
_________________________
Today is the tomorrow you worried about yesterday.

Top
#183411 - 2007-12-07 11:34 PM Re: Rename Print Server [Re: Gargoyle]
Allen Administrator Online   shocked
KiX Supporter
*****

Registered: 2003-04-19
Posts: 4567
Loc: USA
Gargs, do you have MSN Messenger. I got something that might help.
Top
#183412 - 2007-12-07 11:45 PM Re: Rename Print Server [Re: Allen]
Gargoyle Offline
MM club member
*****

Registered: 2004-03-09
Posts: 1597
Loc: Valley of the Sun (Arizona, US...
No luck, we (I) have blocked all IM outside of the work place (HIPPA can be such a pain).
_________________________
Today is the tomorrow you worried about yesterday.

Top
Page 1 of 1 1


Moderator:  Glenn Barnas, NTDOC, Arend_, Jochen, Radimus, Allen, ShaneEP, Ruud van Velsen, Mart 
Hop to:
Shout Box

Who's Online
1 registered (Allen) and 781 anonymous users online.
Newest Members
Sir_Barrington, batdk82, StuTheCoder, M_Moore, BeeEm
17886 Registered Users

Generated in 0.05 seconds in which 0.024 seconds were spent on a total of 13 queries. Zlib compression enabled.

Search the board with:
superb Board Search
or try with google:
Google
Web kixtart.org