Pb Script vbs pour basculer server impression

Pb Script vbs pour basculer server impression - VB/VBA/VBS - Programmation

Marsh Posté le 06-03-2008 à 13:50:49    

Bonjour !
 
Je suis actuellement en stage dans un centre hospitalier et voila le probleme ils ont un serveur d imprimante qu il veulent formater car il a de gros soucis, donc j ai reussi grace a printmigrator 3.1 a faire un backup sur un autre PC de toute les imprimantes reseau et en cherchant sur le net j ai trouver un script qui permet de basculer sur le serveur backup si jamais le serveur d impression tombe en panne sans que les utilisateurs ne voit quoi que ce soit
 
Le serveur d impression tourne sous 2000 Server donc la technique de Clustering ne peut pas fonctionner apparement.
 
voici la souce : http://www.iwannaclick.org/index.p [...] &Itemid=32
 
et voici le script en question :
 

Citation :

'==========================================================================
'
' NAME: monscript.vbs
'
' AUTHOR: sharky
' DATE  : 21.02.2007
'
' COMMENT: Ce script a pour but de balancer automatiquement les imprimantes
'           connectées à l'utilisation au serveur backup d'impression et retour
'
'==========================================================================
On Error Resume Next
DefaultPrintServer = "DATA1"                        'Nom netbios du serveur par défaut
BackupPrintServer = "PRINTSERV02"                        'Nom netbios du serveur d'impression backup
Set WSHShell = WScript.CreateObject("WScript.Shell" )
UTemp = WSHShell.ExpandEnvironmentStrings("%TEMP%" )        'Définition de la zone de travail temporaire pour le script
'Contrôle du serveur d'impression par défaut présent
Set objShell = CreateObject("WScript.Shell" )
Set objExecObject = WSHShell.Exec _
("%comspec% /c ping -n 2 -w 800 "&DefaultPrintServer&"" )'Ping le serveur par défaut, il existe une autre possibilité mais uniquement XP/2003
Do While Not objExecObject.StdOut.AtEndOfStream
strText = objExecObject.StdOut.ReadAll()
If Instr(strText, "TTL=" ) => 1 Then                        'Si dans le résultat du PING il y a au moins 1 TTL= OK
'Si serveur d'impression par défaut est atteignable
OLDSERVER = "\\" & BackupPrintServer
NEWSERVER = "\\" & DefaultPrintServer
Else
'Si serveur d'impression par défaut n'est pas atteignable
OLDSERVER = "\\" & DefaultPrintServer
NEWSERVER = "\\" & BackupPrintServer
End If
Loop
Const ForReading = 1
Const ForWriting = 2
PrinterList = UTemp&"PrinterList.txt"
const HKEY_CURRENT_USER = &H80000001
'1 crée la liste des imprimantes actuelle
ListPrinters()
'2 Ajoute les mêmes imprimantes de liste mais de NEWSERVER
AddPrinters()
'3 redéfinis l'imprimante par défaut
SetDefaultPrinter()
'4 supprime les anciennes imprimantes
DeletePrinters()
'5 Supprime le fichier list
Set objFSO = CreateObject("Scripting.FileSystemObject" )
objFSO.DeleteFile(PrinterList)
WScript.Quit
'**************************************************************************************
Sub ListPrinters()
Set objFSO = CreateObject("Scripting.FileSystemObject" )
Set objDestinationFile = objFSO.OpenTextFile(PrinterList, ForWriting, true)  Set WshNetwork = WScript.CreateObject("WScript.Network" )
Set oPrinters = WshNetwork.EnumPrinterConnections  For i = 0 to oPrinters.Count - 1 Step 2
Printer = oPrinters.Item(i+1)
If UCase(Left(Printer,Len(OLDSERVER)))=OLDSERVER Then
PrinterName=Replace(UCase(Printer),OLDSERVER & "","" )
objDestinationFile.Writeline PrinterName
End If
Next
objDestinationFile.Close
End Sub
'**************************************************************************************
Sub AddPrinters()
Set objFSO = CreateObject("Scripting.FileSystemObject" )
Set objSourceFile = objFSO.OpenTextFile(PrinterList, ForReading)  Set WshNetwork = WScript.CreateObject("WScript.Network" )  Do Until objSourceFile.AtEndOfStream
PrinterName = objSourceFile.ReadLine
NewPrinter = NEWSERVER & "" & PrinterName
WshNetwork.AddWindowsPrinterConnection NewPrinter
Loop
objSourceFile.Close
End Sub
'**************************************************************************************
Sub SetDefaultPrinter()
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "rootdefault:StdRegProv" )  strKeyPath = "SoftwareMicrosoftWindows NTCurrentVersionWindows"
strValueName = "Device"
oReg.GetStringValue HKEY_CURRENT_USER,strKeyPath,strValueName,strValue  If UCase(Left(strValue,Len(OLDSERVER)))=OLDSERVER Then
PrinterName=Replace(UCase(strValue),OLDSERVER & "","" )
Name = Split(PrinterName,"," )
strKeyPath = "SoftwareMicrosoftWindows NTCurrentVersionDevices"
strDeviceName = NEWSERVER & "" & Name(0)
oReg.GetStringValue HKEY_CURRENT_USER,strKeyPath,strDeviceName,SpoolName  strKeyPath = "SoftwareMicrosoftWindows NTCurrentVersionWindows"
strValueName = "Device"
strValue = NEWSERVER & "" & Name(0) & "," & SpoolName
oReg.SetStringValue HKEY_CURRENT_USER,strKeyPath,strValueName,strValue
End If
End Sub
'**************************************************************************************
Sub DeletePrinters()
Set objFSO = CreateObject("Scripting.FileSystemObject" )
Set objSourceFile = objFSO.OpenTextFile(PrinterList, ForReading)  strComputer = "."  Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "rootdefault:StdRegProv" )  Do Until objSourceFile.AtEndOfStream
PrinterName = objSourceFile.ReadLine  strServer = Replace(OLDSERVER,"\\","" )
strKeyPath = "PrintersConnections,," & strServer & "," & PrinterName
oReg.DeleteKey HKEY_CURRENT_USER, strKeyPath  strKeyPath = "SoftwareMicrosoftWindows NTCurrentVersionDevices"
strDeviceName = OLDSERVER & "" & PrinterName
oReg.DeleteValue HKEY_CURRENT_USER, strKeyPath,strDeviceName  strKeyPath = "SoftwareMicrosoftWindows NTCurrentVersionPrinterPorts"
strPrinterPortName = OLDSERVER & "" & PrinterName
oReg.DeleteValue HKEY_CURRENT_USER, strKeyPath,strPrinterPortName
Loop
objSourceFile.Close
End Sub


 
PS : j ai telecharger VBFactory et fait un debogage donc les erreurs qui se generai etait je pense un probleme de retour a la ligne mais il reste d autre erreur et je cale sur ca etabnt debutant dans ce domaine.
 
Si je n ai pas ete assez clair sur certains point dites le moi je vous renseignerai
 
Merci d avance pour vos reponses.


Message édité par axxel88 le 07-03-2008 à 15:07:24
Reply

Marsh Posté le 06-03-2008 à 13:50:49   

Reply

Marsh Posté le 06-03-2008 à 19:28:14    

Ce sujet a été déplacé de la catégorie Windows & Software vers la categorie Programmation par Freds45


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 07-03-2008 à 09:11:13    

Excusez moi j avais poster dans windows car un sujet ressemblant avait etait dans cette rubrique.

Reply

Marsh Posté le 11-03-2008 à 14:38:05    

je suis plus en stage donc ce n est plus tres important mais si vous avez quand meme la reponse je viendrai de temps en temps voir si quelqu un a repondu

Reply

Marsh Posté le 05-04-2008 à 10:53:46    

as-tu changer les 2 variables ??
DefaultPrintServer = "DATA1"                        'Nom netbios du serveur par défaut
BackupPrintServer = "PRINTSERV02"                        'Nom netbios du serveur d'impression backup

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed