Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1785 connectés 

  FORUM HardWare.fr
  Windows & Software
  Win NT/2K/XP

  Comment mapper des imprimantes par script ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment mapper des imprimantes par script ?

n°2731421
jackseg198​0
Posté le 25-10-2007 à 17:20:02  profilanswer
 

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...
mood
Publicité
Posté le 25-10-2007 à 17:20:02  profilanswer
 

n°2731425
seb_352
Posté le 25-10-2007 à 17:50:25  profilanswer
 

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 ?

n°2731429
jackseg198​0
Posté le 25-10-2007 à 18:24:40  profilanswer
 

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...
n°2731435
seb_352
Posté le 25-10-2007 à 18:43:52  profilanswer
 

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
n°2731463
jackseg198​0
Posté le 25-10-2007 à 20:31:18  profilanswer
 

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...
n°2731575
jackseg198​0
Posté le 26-10-2007 à 12:25:54  profilanswer
 

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...
n°2731578
xanack
Posté le 26-10-2007 à 12:40:14  profilanswer
 

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.....

n°2731581
jackseg198​0
Posté le 26-10-2007 à 12:45:51  profilanswer
 

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...
n°2731583
xanack
Posté le 26-10-2007 à 12:50:21  profilanswer
 

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.

n°2731586
jackseg198​0
Posté le 26-10-2007 à 12:54:55  profilanswer
 

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...
mood
Publicité
Posté le 26-10-2007 à 12:54:55  profilanswer
 

n°2731590
xanack
Posté le 26-10-2007 à 12:59:14  profilanswer
 

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+

n°2731604
jackseg198​0
Posté le 26-10-2007 à 14:08:32  profilanswer
 

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...
n°2731712
jackseg198​0
Posté le 26-10-2007 à 23:30:15  profilanswer
 

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...
n°2784919
la peluche
Posté le 10-06-2008 à 10:48:32  profilanswer
 

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 :)

n°2785025
la peluche
Posté le 10-06-2008 à 16:59:38  profilanswer
 

personne n'as d'idées?

n°2785222
jackseg198​0
Posté le 11-06-2008 à 19:39:25  profilanswer
 

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...
n°2785284
la peluche
Posté le 12-06-2008 à 09:22:59  profilanswer
 

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
n°2785368
la peluche
Posté le 12-06-2008 à 14:25:57  profilanswer
 

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)

n°2786032
la peluche
Posté le 16-06-2008 à 08:50:31  profilanswer
 

up

n°2786472
la peluche
Posté le 17-06-2008 à 17:14:49  profilanswer
 

:up:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software
  Win NT/2K/XP

  Comment mapper des imprimantes par script ?

 

Sujets relatifs
Soft / Script installation de softprobleme java script
[2K3 SRV] Affecter script sur une OUpb avce Script VBS d'ouverture ed session sous 2003 server
Excel ignore mes imprimantes[Script DOS] Exécuter le contenu d'une variable
desactiver le message "erreur de script de internet explorer"Désinstaller composant Windows avec un script
Script VBS Printer ImprimanteConfigurer une connexion par un script
Plus de sujets relatifs à : Comment mapper des imprimantes par script ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR