Ressources imprimantes
Pourquoi ?
Pour ajouter simplement une imprimante réseau dans une salle. La aussi un script gpo logon utilisateurs serait bien adaptée mais pas compatible avec 9X et NT4 et de nombreux scripts un peut partout.
J'ai voulu centraliser cela dans le logonscript.
Une fois la salle de l'ordinateur localisée avec ce script, il fallait un fichier de définition des imprimantes.
Ayant un peu peur que le serveur d'impression tombe en rade et toutes les imprimantes réseau avec, j'ai installé les imprimantes sur deux serveurs avec le même nom de partage.
Je profite du script pour ajouter une tolérance aux pannes en testant le serveur avant d'y connecter mon imprimante. Si le premier serveur ne répond pas, on utilise le second.
Dans l'ensemble du réseau, les imprimantes sont équilibrées sur les deux serveurs. (de plus, les ressources disque sont en dfs sur les deux serveurs (déploiement des application, menus déportés, ressources logiciels. Donc, l'un des deux serveurs peut tomber en rade sans problème majeur sur le réseau).
Principe :
Le fichier texte des imprimante à le format suivant :
salle;srv1;srv2;nom_impr;pilote;[defaut]
Une ligne pour chaque imprimante-salle ; defaut : mettre un D pour que l'imprimante soit l'imprimante par défaut
Une fois la salle de l'ordinateur localisée avec ce script, on parcours le fichier imprimantes en recherchant les imprimantes dans la salle du fichier texte.
Le nom du fichier texte doit être passé en argument du logonscript
Au passage, si le fichier imprimante est effectivement détecté, et une salle à été trouvée, on nettoie les imprimantes déjà connectées.
WScript.echo "Installation des imprimantes..."
If sFichierImp <> "" AND salle <> "" Then
' Nettoyage des imprimantes réseau
SET oPrinters = oNet.EnumPrinterConnections
For i = 0 to oPrinters.Count - 1 Step 2
If Left(oPrinters.Item(i +1),2) = "\\" Then
Wscript.echo "Suppression de l'imrpimante : " & oPrinters.Item(i+1)
oNet.RemovePrinterConnection oPrinters.Item(i+1),True,True
oNet.RemovePrinterConnection oPrinters.Item(i),True,True
End If
Next
WScript.echo "Recherche des imprimantes réseau..."
Set oNomFichier=objFSO.OpenTextFile(NetLogon &sFichierImp,1)
continue=True
Do Until oNomFichier.AtEndOfStream And continue
Ligne=Split(oNomFichier.ReadLine,";")
sUNCPrinter1="\\"&Ligne(1)&"\"&Ligne(3)
sUNCPrinter2="\\"&Ligne(2)&"\"&Ligne(3)
IF Ligne(0) = salle Then
If ping(Ligne(1)=0) Or Ligne(2) = "" Then
WScript.echo "connexion à l'imprimante :"&sUNCPrinter1 &" pilote :"&Ligne(4)
oNet.AddWindowsPrinterConnection sUNCPrinter1 , Ligne(4)
IF Ligne(4) = "D" Then
oNet.SetDefaultPrinter sUNCPrinter1
End If
Else
Set objF=objFSO.openTextFile(sUnc,ForAppending)
objF.WriteLine(Now & " ; " & sOrdi&" ; " & sUtilisateur & " ; Connexion au serveur imprimantes 2")
objF.Close
WScript.echo "connexion à l'imprimante :"&sUNCPrinter2 &" pilote :"&Ligne(4)
oNet.AddWindowsPrinterConnection sUNCPrinter2 , Ligne(4)
IF Ligne(4) = "D" Then
oNet.SetDefaultPrinter sUNCPrinter2
End If
End If
End If
If Ligne(0)="" Then continue = False
Loop
oNomFichier.Close
End If