Comment mapper des imprimantes par script ?

Comment mapper des imprimantes par script ? - Win NT/2K/XP - Windows & Software

Marsh Posté le 25-10-2007 à 17:20:02    

Bonjour,
 
Je suis face à une problématique assez urgente. J'aimerais savoir si c'est possible de mapper, via un script, des imprimantes existantes sur un nouveau serveur.
Je m'explique. Nous avons actuellement sur les postes clients des imprimantes réseaux qui pointes sur le serveur old-server comme chemin UNC \\old-server\imprimante1.
Nous allons devoir migrer notre serveur d'impression sur un serveur new-server. J'aimerais que lundi matin, quand les personne se loguent (logon.bat), ce script détecte les imprimantes qui sont chez le client puis fasse le mapping sur le nouveau serveur, pour être totalement transparent pour le client.
 
Exemple
======

 
Client1
Imprimantes: \\old-server\ImprimanteDuBureau
                  \\old-server\ImprimanteDuStock
 
J'aimerais que lors du prochain login, ces 2 imprimantes soient mappés sur le new-server pour le client1 comme:
                  \\new-server\ImprimanteDuBureau
                  \\new-server\ImprimanteDuStock
 
Mais seulement ces 2 imprimantes qui se trouvaient déjà dans le profil du client1 et pas d'autres.
 
J'espère que c'est assez clair.
Merci d'avance.
Jacques


Message édité par jackseg1980 le 26-10-2007 à 23:36:38

---------------
youplà boum...
Reply

Marsh Posté le 25-10-2007 à 17:20:02   

Reply

Marsh Posté le 25-10-2007 à 17:50:25    

salut,
 
je sais que tu peux en vbs ajouter une imprimante mais je ne connais pas la structure du script.
p-e cette solution t'interessera : http://www.microsoft.com/technet/p [...] x?mfr=true
 
sinon si tu utilise des serveurs sous 2003 R2 (standard ou autre) tu peux deployer tes imprimantes par gpo de facon relativement simple (uniquement avec la R2) dis moi si ca t'aide ?

Reply

Marsh Posté le 25-10-2007 à 18:24:40    

Merci pour ces infos, je vais voir ce que je peux faire avec le programme de Microsoft.
 
Pour l'OS, l'ancien serveur est un Windows Server 2003 Standard SP1 et le nouveau est sous Windows Server 2003 Standard SP2 mais pas de R2.
La problématique des GPO c'est que ca ne me donne pas les imprimantes actuellement mappé sur un profil pour pouvoir les remplacer automatiquement sur le nouveau serveur, donc ca ne me servira à rien. Je ne sais pas quelle imprimante dois être mappé sur quel profil (ils sont compliqué ici, certaines personnes ont besoin d'une imprimante à l'autre bout de l'entreprise).
 
Mais en jouant avec les chaînes de caractères sous vbs, je devrais arriver à quelque chose, le problème c'est que ce problème est justement apparu aujourd'hui alors qu'on migre samedi, donc c'est très short pour tout faire bien.


---------------
youplà boum...
Reply

Marsh Posté le 25-10-2007 à 18:43:52    

Citation :

Je ne sais pas quelle imprimante dois être mappé sur quel profil

 

tu peux eventuellement (si un jour tu passes sous R2) deployer tes imprimantes à des groupes, ex l'imp buro1 deployé sur G_buro1 (groupe global buro1)
après tu affectes qui tu veux au grpe mm si la personne est a l'autre bout de l'entreprise, ceci dis je ne connais pas tes contraintes ni ton organisation, c'était pour info

 

voici un petit article que tu pourrais lire :
http://www.laboratoire-microsoft.o [...] ment-R2/2/


Message édité par seb_352 le 25-10-2007 à 18:44:33
Reply

Marsh Posté le 25-10-2007 à 20:31:18    

Vu que j'ai quelques serveurs sous R2, je vais regarder pour la méthode via GPO, merci :jap:  
 
En fait, c'était très simple à faire par script. Je viens de le terminer et ai testé dans un script de connections de test et tout fonctionne parfaitement. Je met le code au cas ou ça pourrait aider quelqu'un...
Je reprends les noms en exemple de ma question pour les serveurs (old-server, new-server)
 

Code :
  1. ' Script de connection des imprimantes réseau pour la migration du Print Server
  2. ' 25.10.2007, v1.3
  3. Dim WshNetwork
  4. dim pDefault
  5. strComputer = "."
  6. cpt = 0
  7. Const newServer="\\new-server\"
  8. Const oldServer="\\old-server\"
  9. Set WshNetwork = WScript.CreateObject("WScript.Network" )
  10. Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2" )
  11. Set colInstalledPrinters = objWMIService.ExecQuery ("Select * from Win32_Printer" )
  12. 'Quel est la default printer
  13. pDefault = GetDefaultPrinter
  14. For Each objPrinter in colInstalledPrinters
  15.   Name = LCase(objPrinter.Name)
  16.  
  17.   'Ne modifie que les imprimantes réseau sur l'ancien serveur et non les autres
  18.   If inStr(Name, oldServer) Then
  19.     cpt = ctp + 1
  20.     'Remplace le nom de l'ancien serveur par le nouveau
  21.     NewName = Replace(Name, oldServer, newServer)
  22.    'Remove de l'ancien mappage
  23.    WshNetwork.RemovePrinterConnection Name
  24.   'Mappage sur le nouveau print server
  25.    WshNetwork.AddWindowsPrinterConnection NewName
  26.   End If
  27. Next
  28. 'Si il n'y a pas d'imprimante réseau, l'imprimante par défaut reste la même
  29. If (cpt > 0) then
  30.   'Nouveau default printer
  31.   pDefault = Replace(pDefault, oldServer, newServer)
  32.   WshNetwork.SetDefaultPrinter pDefault
  33. End If
  34. 'Fin du script
  35. Wscript.quit()
  36. 'Trouve l'imprimante définie par défaut
  37. Function GetDefaultPrinter() 
  38.   Set oShell = CreateObject("WScript.Shell" ) 
  39.   sRegVal = "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device" 
  40.   sDefault = "" 
  41.   On Error Resume Next
  42.   sDefault = oShell.RegRead(sRegVal)
  43.   sDefault = Left(sDefault ,InStr(sDefault, "," ) - 1)
  44.   On Error Goto 0 
  45.   GetDefaultPrinter = sDefault
  46. End Function


 
Bonne soirée.
Jack


Message édité par jackseg1980 le 26-10-2007 à 23:42:10

---------------
youplà boum...
Reply

Marsh Posté le 26-10-2007 à 12:25:54    

J'ai une autre question à propos des serveurs d'impression. Est-ce qu'il est possible d'avoir plusieurs serveurs d'impression dans le même domaine avec les mêmes imprimantes (même nom, même partage) ?
Si oui, comment fait Active Directory quand on fait une recherche d'imprimante pour savoir sur quel serveur la prendre ?
 
Merci.
Jack


---------------
youplà boum...
Reply

Marsh Posté le 26-10-2007 à 12:40:14    

réponse a la premiere question : oui c mon cas mais on les publies pas dans l'AD pour l'instant.
a la deuxieme : je sais pas.....

Reply

Marsh Posté le 26-10-2007 à 12:45:51    

Donc pas de risque de conflit en ayant 2 mêmes serveurs d'impression ? :??:`(même au niveau de la config bien sûr. Le nom du serveur est différent).


Message édité par jackseg1980 le 26-10-2007 à 12:46:35

---------------
youplà boum...
Reply

Marsh Posté le 26-10-2007 à 12:50:21    

bah ecoute auparavant on avait nos imprimante sur notre serveur DHCP... on a decidé de les mettre sur notre serveur de fichier (bien plus rapide) et actuellement les imprimantes sont sur les deux serveurs....
les users les installes en allant en partage sur le serveur et se connecte sur celle souhaitée, c'est un peu archaique... mais aucun pb apparent.

Reply

Marsh Posté le 26-10-2007 à 12:54:55    

Ok, je vois.
En fait dans ton cas, c'est l'utilisateur (ou toi) qui choisis le serveur.
Dans Active Directory non, car dès que l'imprimante est sur le réseau, j'ai fait une réservation au niveau du DHCP qui permet d'aller écrire dans la DNS (je n'ai pas accès au DC dirrectement, donc j'ai du contourner) ce qui fait qu'elle est automatiquement répértorié dans AD.
Je ne voudrais justement pas que ce soit flou et que si une personne installe une imprimante, on ne sache pas sur quel serveur elle est mappé par défaut vu qu'on veut passer sur un nouveau réseau avec de nouveau VLAN et un adressage IP différent.


---------------
youplà boum...
Reply

Marsh Posté le 26-10-2007 à 12:54:55   

Reply

Marsh Posté le 26-10-2007 à 12:59:14    

bah j'imagine que les serveurs et les pc vont migrer en meme temps sur le nouveau vlan, donc sur le meme range ip, donc logiquement c'est transparent.... enfin bon au niveau AD je ne sais pas comment ca se passe vraiment avec les imprimantes donc pour ma part,  je m'arrete la pour ne pas dire de conneries.... si ce n'est deja fait !  [:ddrs55]  
bon courage a+

Reply

Marsh Posté le 26-10-2007 à 14:08:32    

xanack a écrit :

bah j'imagine que les serveurs et les pc vont migrer en meme temps sur le nouveau vlan, donc sur le meme range ip, donc logiquement c'est transparent....


Et c'est justement là le problème.
On ne va migrer que la partie Unix ce week-end, mais le serveur d'impression CUPS accède directment au serveur d'impression "maître" qui se trouve sur Windows. Nous n'allons pas migrer tous les client Windows maintenant, car c'est un boulot de titan et il faut faire ça département par département, tranquillement en esperant qu'il n'y ai pas d'effets de bords.
En modifiant les adresses IP de certaines imprimantes pour Unix, on modifie donc aussi pour les clients Windows. D'ou mon problème pour savoir si je peux garder 2 print server identique dans le même domaine sans qu'il y ai de conflit.


---------------
youplà boum...
Reply

Marsh Posté le 26-10-2007 à 23:30:15    

Bon, j'ai la réponse vu que j'ai été obligé de tester (plus le temps de chercher d'autre solutions...).
Et bien en fait il n'y a aucun problème et Active Directory montre les 2 mêmes imprimantes mais en séparant bien les 2 serveurs ;)  
 
J'ai mis à jour le script pour gérer les imprimantes par défaut sinon bonjour les téléphones le jour de la migration.
En espérant que ça servira à quelqu'un...
 
Bonne soirée.


---------------
youplà boum...
Reply

Marsh Posté le 10-06-2008 à 10:48:32    

Bonjour.
 
Merci beaucoup pour ce script, il fonctionne parfaitement avec XP et Win 2003.
Par contre, pas avec win 2000 (on en trouve encore dans ma boite).
Je ne m'y connais clairement pas en VBS, quelqu'un saurait modifier le script pour détecter quel est la version de windows et appliquer alors tel ou tel procédure?
merci beaucoup :)

Reply

Marsh Posté le 10-06-2008 à 16:59:38    

personne n'as d'idées?

Reply

Marsh Posté le 11-06-2008 à 19:39:25    

Si tu as du 98, 2000, XP, 2003 ou Vista, tu peux utiliser ce petit script pour détecter la version:
 

Code :
  1. On error resume Next
  2.   Set shell = WScript.CreateObject("WScript.Shell" )
  3.   K1="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows"
  4.   K2="\CurrentVersion\CurrentVersion"
  5.   KeyVer=K1 & " NT" & K2
  6.   PN=shell.RegRead(KeyVer)
  7.   If Err <>0 Then ' On est sous Win9x/ME
  8.     Err.Clear
  9.     KeyVer=K1 & K2
  10.     PN=shell.RegRead(KeyVer)
  11.   End If
  12.  
  13.   wscript.echo "Version de Windows : " & PN


 
Il va lire la version de Windows directement dans la base de registre.
Tu n'as qu'à faire un test sur le string avec mon script ci-dessus.
 
Ca ne fonctionne pas avec NT4 par contre. Si tu as des machines avec NT4 alors il faut remplacer K2="\CurrentVersion\ProductName" par K2="\CurrentVersion\CurrentVersion"
 
Voici la valeur de CurrentVersion:
 
4.0 (NT 4)
5.0 (W2K)
5.1 (XP)
5.2 (W2K3)
6.0 (Vista)


---------------
youplà boum...
Reply

Marsh Posté le 12-06-2008 à 09:22:59    

Tout d'abord, merci de ton aide :)
Alors, ça détecte bien la version, du 5.0 pour W2K dans mon cas.
Il reviens alors et me dit qu'il y'a une erreur sur la ligne 31, la connexion réseau n'éxiste pas.
Il n'aime pas le WSHNetwork j'ai l'impression.
 
du nt4, à priori je n'en ai plus du tout là ou je suis. Par contre du Win 2000 il y'en as encore pas mal.


Message édité par la peluche le 12-06-2008 à 09:52:47
Reply

Marsh Posté le 12-06-2008 à 14:25:57    

j'ai trouvé ceci sur le net:
http://www.generation-nt.com/repon [...] -7651.html
 
et il y'a ça que je ne comprend pas:

Code :
  1. Set oShell = CreateObject("WScript.Shell" )
  2. sRun = "rundll32 printui.dll,PrintUIEntry /dn /q /n" & sImprimante
  3. bRetour = oShell.Run(sRun , 0 , True)

Reply

Marsh Posté le 16-06-2008 à 08:50:31    

up

Reply

Marsh Posté le 17-06-2008 à 17:14:49    

:up:

Reply

Sujets relatifs:

Leave a Replay

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