Serveur d'impression
Redondance dans les serveurs d'impression – Serveur d’impression
J'ai ce script pour ça. Je l'ai eu d'un site web il y a des années …
Code:
'------------------------------------------------ 'Auteur: Isaac G 'Date: 4/29/2008 'Script pour mettre à jour les imprimantes installées des utilisateurs vers 'utiliser un serveur d'impression secondaire ' Option explicite Dim PF, StrHostPrintsrv1 Set PF = New PrinterFailover StrHostPrintsrv1 = "YOURPRIMARYPRINTSERVERNAME" Si Ping (StrHostPrintsrv1) = False alors PF.PS_PROD = "YOURPRIMARYPRINTSERVERNAME" PF.PS_BACKUP = "YOURSECONDARYPRINTSERVERNAME" Autre PF.PS_PROD = "VOTRESECONDARYPRINTSERVERNAME" PF.PS_BACKUP = "YOURPRIMARYPRINTSERVERNAME" Fin si Fonction publique Ping (strHost) Dim objPing, objRetStatus set objPing = GetObject ("winmgmts: impersonationLevel = impersonate"). ExecQuery _ ("select * from Win32_PingStatus où address = '" & strHost & "'") pour chaque objRetStatus dans objPing si IsNull (objRetStatus.StatusCode) ou objRetStatus.StatusCode <> 0, alors Ping = False 'WScript.Echo "Le code d'état est" & objRetStatus.StatusCode autre Ping = True 'Wscript.Echo "Bytes =" & vbTab & objRetStatus.BufferSize 'Wscript.Echo "Time (ms) =" & vbTab & objRetStatus.ResponseTime 'Wscript.Echo "TTL (s) =" & vbTab & objRetStatus.ResponseTimeToLive fin si suivant Fonction de fin PF.UpdatePrinters WScript.Quit Classe PrinterFailover 'Publique Public PS_PROD Public PS_BACKUP 'Privé Privé oShell Privé HKEY_CURRENT_USER Privé HKCU_DEFAULT_PRINTER Private Sub Class_Terminate () Définir oShell = Nothing End Sub Private Sub Class_Initialize () Définir oShell = WScript.CreateObject ("WScript.Shell") HKEY_CURRENT_USER = & H80000001 'Rev2 HKCU_DEFAULT_PRINTER = "HKCU Logiciel Microsoft Windows NT CurrentVersion Windows Device" 'end rev2 End Sub Fonction publique UpdatePrinters () Dim v, ar, i, j ar = arPrinters () Dim retValueNames Dim retValueTypes SKeyPath: sKeyPath = "Imprimantes Connexions " Dim RegFullKeyPath Dim arRegVal () Dim nName: nName = 0 Dim nType: nType = 1 Dim nVal: nVal = 2 'rev2 Dim PrintersUpdated: PrintersUpdated = False Dim DefPrinter: DefPrinter = DefaultPrinter () 'End rev 2 Pour i = 0 à UBound (ar, 1) Si InStr (ar (i), PS_PROD)> 0 alors 'WScript.Echo "Mise à jour de la clé d'imprimante:" & ar (i) 'rev2 PrintersUpdated = True 'end rev2 RegFullKeyPath = sKeyPath & ar (i) Appelez EnumRegVals (RegFullKeyPath, _ retValueNames, _ retValueTypes) ReDim arRegVal (3, UBound (retValueNames)) Pour j = 0 à UBound (retValueNames) 'WScript.Echo "nom de la valeur:" & retValueNames (j) & ":" & oShell.RegRead ("HKCU " & RegFullKeyPath & "" & retValueNames (j)) arRegVal (nName, j) = retValueNames (j) arRegVal (nType, j) = RegTypeNameFromVal (retValueTypes (j)) arRegVal (nVal, j) = oShell.RegRead ("HKCU " & RegFullKeyPath & "" & retValueNames (j)) Prochain oShell.RegDelete "HKCU " & RegFullKeyPath & "" Pour j = 0 à UBound (arRegVal, 2) oShell.RegWrite Replace ("HKCU " & RegFullKeyPath & "" & arRegVal (nName, j), PS_PROD, PS_BACKUP), _ Remplacez (arRegVal (nVal, j), PS_PROD, PS_BACKUP), _ arRegVal (nType, j) Prochain Fin si Prochain 'rev2 'Ne mettez à jour l'imprimante par défaut que si nous avons échoué Si PrintersUpdated Then UpdateDefaultPrinter (DefPrinter) Fin si 'end rev2 Fonction de fin Public Sub EnumRegVals (ByVal sKeyPath, _ ByRef retValueNames, _ ByRef retValueTypes) 'Référence WMI 'http://msdn.microsoft.com/en-us/library/aa390387(VS.85).aspx Dim sComp: sComp = "." Dim i, oReg Définissez oReg = GetObject ("winmgmts: impersonationLevel = impersonate! \" & _ sComp & " root default: StdRegProv") oReg.EnumValues HKEY_CURRENT_USER, sKeyPath, _ retValueNames, retValueTypes End Sub Fonction privée RegTypeNameFromVal (RegType) const REG_SZ = 1 const REG_EXPAND_SZ = 2 const REG_BINARY = 3 const REG_DWORD = 4 const REG_MULTI_SZ = 7 Dim s Sélectionner le type de cas Case REG_SZ s = "REG_SZ" Cas REG_EXPAND_SZ s = "REG_EXPAND_SZ" Affaire REG_BINARY s = "REG_BINARY" Case REG_DWORD s = "REG_DWORD" Affaire REG_MULTI_SZ s = "REG_MULTI_SZ" 'bien que RegWrite ne supporte pas ce type Fin Sélectionnez RegTypeNameFromVal = s Fonction de fin Fonction privée arPrinters () Dim sComp: sComp = "." SKeyPath: sKeyPath = "Imprimantes Connexions" Dim ar, sous-clé, oReg Définissez oReg = GetObject ("winmgmts: impersonationLevel = impersonate! \" & _ sComp & " root default: StdRegProv") oReg.EnumKey HKEY_CURRENT_USER, sKeyPath, ar arPrinters = ar Fonction de fin 'rev2 Fonction privée DefaultPrinter () Dim s s = oShell.RegRead (HKCU_DEFAULT_PRINTER) DefaultPrinter = s Fonction de fin Private Sub UpdateDefaultPrinter (DefPrinter) oShell.RegWrite HKCU_DEFAULT_PRINTER, Remplacer (DefPrinter, PS_PROD, PS_BACKUP) End Sub 'end rev2 Classe de fin
Click to rate this post!
[Total: 0 Average: 0]
Commentaires
Laisser un commentaire