Question Mappage imprimante

Plus d'informations
il y a 2 ans 11 mois - il y a 2 ans 11 mois #30840 par witness
Mappage imprimante a été créé par witness
Bonjour,

Actuellement, sur notre domaine, le mappage d'imprimante se fait à partir d'un vieux script de démarrage (vbscript) qui va chercher les informations dans un fichier texte.
Chaque ligne de ce fichier texte contient le nom de l'ordinateur ainsi que le nom de l'imprimante à mapper.
Je voudrais passer à un script powershell pour faire la même chose.

Les idées générales auxquelles je pense:

Création de variables qui iront chercher des éléments de type string dans chaque ligne du fichier texte, notamment le nom de l'ordinateur en début de ligne puis le nom de l'imprimante partagée.

Il va falloir aussi que toutes les lignes du fichier soit lues pour trouver l'ordinateur, ou bien faire une recherche sur le nom d'ordinateur directement.

Comment aller chercher des informations dans un fichier texte et créer un traitement, soit par ligne, soit par une recherche ?

Il faut aussi que le système sache que les deux informtions sont sur la même ligne.

Pourriez-vous m'aider à structurer le script en me donnant les étapes dans les grandes lignes ?
Merci d'avance.
Dernière édition: il y a 2 ans 11 mois par witness.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 11 mois #30841 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Mappage imprimante
Salut,
sans le code d'origine pas facile de le migrer...
Est-ce qq chose comme ceci :
stackoverflow.com/questions/43583498/how...h-powershell-and-csv

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 11 mois #30847 par witness
Réponse de witness sur le sujet Mappage imprimante

Laurent Dardenne écrit: Salut,
sans le code d'origine pas facile de le migrer...
Est-ce qq chose comme ceci :
stackoverflow.com/questions/43583498/how...h-powershell-and-csv

Salut Laurent,
En fait, le fichier texte actuel contient une ligne par poste, de ce genre:

Ordinateur1:"\\serveur\nom_imprimante"
Ordinateur2:"\\serveur\nom_imprimante"
Ordinateur2:"\\serveur\nom_imprimante"

Voici la partie du script concernant le mappage des inprimantes:
WScript.Sleep 5000
    station = UCASE (WSHNetwork.ComputerName)
    If (mappage_imprimante="OUI" and objfso.FileExists(Fichier_imp)) Then
           'RKN/Atos Origin le 09/07/08 : Correction d'un bug de mappage 
           'DIM fso, f, ts
           DIM fso, f, ts, station_fichier
           Set f = objfso.GetFile(Fichier_imp)
           err.clear
           Set ts = f.OpenAsTextStream(ForReading, TristateUseDefault)
           if ( err.number = 0 ) then
               Do While ts.AtEndOfStream <> TRUE
                   chaine = UCASE (ts.ReadLine)
                                  
                   'Ordinateur trouvé dans le fichier
                   If (chaine<>"") then
                       station_fichier= Split(chaine,":")
           

                       ' si caractere générique * on cherche station_fichier(0) dans station
                       ' si pas caract générique on cherche station dans station_fichier(0)

                       If InStr(station_fichier(0),"*")<>"0" then ' caractere gene trouvé
                                  station_fichier1= Split(station_fichier(0),"*")
                       If InStr(station,station_fichier1(0)) <> "0" then 'Ordinateur trouvé dans le fichier
       
                              longueur = len(chaine)
                              posfin = longueur 
                              default = "oui"
                              Do While posfin <> "0" 'Lecture de toute la ligne : Traitement d'1 ou plusieurs imprimantes
                                      posdeb =  instr (chaine,":")
                                      chaine = Mid(chaine, posdeb + 1,longueur)
                                      posfin = instr (chaine, ";")
                                      If posfin <> 0                 Then
                                                      imprimante = Mid(chaine, 1,posfin - 1)
                                                      chaine = Mid(chaine,posfin + 1, longueur)
                                      Else
                                                      imprimante = chaine
                                      End If
                                      If default = "oui" Then defaultImprimante = imprimante'si c'est la premiere imprimante de la ligne, on la monte comme imp par defaut
                                      imprimante = Mid(imprimante, 2, (len(imprimante)) -2)
                                      strPrinterPath = imprimante 
                                      on error resume next
                                      WSHNetwork.AddWindowsPrinterConnection imprimante
                                      on error goto 0
                                      If err.number <> 0 Then
                                                      MAPPING_IMP = "ERREUR"
                                      Else
                                                      If default = "oui" Then WSHNetwork.SetDefaultPrinter imprimante
                                      End If
                                      default = "non"
                              loop
                       End If

                       If InStr(station,station_fichier1(0)) <> "0" then 'Ordinateur trouvé dans le fichier
       
                          longueur = len(chaine)
                          posfin = longueur 
                          default = "oui"
                          Do While posfin <> "0" 'Lecture de toute la ligne : Traitement d'1 ou plusieurs imprimantes
                                  posdeb =  instr (chaine,":")
                                  chaine = Mid(chaine, posdeb + 1,longueur)
                                  posfin = instr (chaine, ";")
                                  If posfin <> 0                 Then
                                                  imprimante = Mid(chaine, 1,posfin - 1)
                                                  chaine = Mid(chaine,posfin + 1, longueur)
                                  Else
                                                  imprimante = chaine
                                  End If
                                  If default = "oui" Then defaultImprimante = imprimante'si c'est la premiere imprimante de la ligne, on la monte comme imp par defaut
                                  imprimante = Mid(imprimante, 2, (len(imprimante)) -2)
                                  strPrinterPath = imprimante 
                                  on error resume next
                                  WSHNetwork.AddWindowsPrinterConnection imprimante
                                  on error goto 0
                                  If err.number <> 0 Then
                                                  MAPPING_IMP = "ERREUR"
                                  Else
                                                  If default = "oui" Then WSHNetwork.SetDefaultPrinter imprimante
                                  End If
                                  default = "non"
                          loop
                       End If 


                       
                       Else 'recherche classique

                       If InStr(station_fichier(0), station) <> "0" then 'Ordinateur trouvé dans le fichier
       
                          longueur = len(chaine)
                          posfin = longueur 
                          default = "oui"
                          Do While posfin <> "0" 'Lecture de toute la ligne : Traitement d'1 ou plusieurs imprimantes
                                  posdeb =  instr (chaine,":")
                                  chaine = Mid(chaine, posdeb + 1,longueur)
                                  posfin = instr (chaine, ";")
                                  If posfin <> 0                 Then
                                                  imprimante = Mid(chaine, 1,posfin - 1)
                                                  chaine = Mid(chaine,posfin + 1, longueur)
                                  Else
                                                  imprimante = chaine
                                  End If
                                  If default = "oui" Then defaultImprimante = imprimante'si c'est la premiere imprimante de la ligne, on la monte comme imp par defaut
                                  imprimante = Mid(imprimante, 2, (len(imprimante)) -2)
                                  strPrinterPath = imprimante 
                                  on error resume next
                                  WSHNetwork.AddWindowsPrinterConnection imprimante
                                  on error goto 0
                                  If err.number <> 0 Then
                                                  MAPPING_IMP = "ERREUR"
                                  Else
                                                  If default = "oui" Then WSHNetwork.SetDefaultPrinter imprimante
                                  End If
                                  default = "non"
                          loop
                       End If

                       If InStr(station_fichier(0), station) <> "0" then 'Ordinateur trouvé dans le fichier
       
                          longueur = len(chaine)
                          posfin = longueur 
                          default = "oui"
                          Do While posfin <> "0" 'Lecture de toute la ligne : Traitement d'1 ou plusieurs imprimantes
                                  posdeb =  instr (chaine,":")
                                  chaine = Mid(chaine, posdeb + 1,longueur)
                                  posfin = instr (chaine, ";")
                                  If posfin <> 0                 Then
                                                  imprimante = Mid(chaine, 1,posfin - 1)
                                                  chaine = Mid(chaine,posfin + 1, longueur)
                                  Else
                                                  imprimante = chaine
                                  End If
                                  If default = "oui" Then defaultImprimante = imprimante'si c'est la premiere imprimante de la ligne, on la monte comme imp par defaut
                                 imprimante = Mid(imprimante, 2, (len(imprimante)) -2)
                                  strPrinterPath = imprimante 
                                  on error resume next
                                  WSHNetwork.AddWindowsPrinterConnection imprimante
                                  on error goto 0
                                  If err.number <> 0 Then
                                                  MAPPING_IMP = "ERREUR"
                                  Else
                                                  If default = "oui" Then WSHNetwork.SetDefaultPrinter imprimante
                                  End If
                                  default = "non"
                          loop
                       End If 



                       End If



                   end if
               Loop
           ts.Close
           End If
    End If

Ça peut être plus court en powershell lol ?

Merci d'avance

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 11 mois #30850 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Mappage imprimante
>>Ça peut être plus court en powershell lol ?
Je pense et plus lisible surtout...
En recherchant ceci
powershell WSHNetwork AddWindowsPrinterConnection

Tu trouveras qq pistes pour compléter le premier lien.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 10 mois #30857 par witness
Réponse de witness sur le sujet Mappage imprimante
Merci Laurent.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 10 mois #30865 par Damien Commenge
Réponse de Damien Commenge sur le sujet Mappage imprimante
Bonjour,

Si je lis bien, il y a un domaine. S'il y a un domaine, il y a des GPOs.
Dans ce cas, les scripts ne sont plus nécessaires dans 99% des cas pour mapper des imprimantes / lecteurs réseaux / raccourcis / clés de registres / ...

Il est possible d'utiliser les préférences qui permettent de mapper ces éléments et faire un filtre en fonction d'un groupe par exemple...
Si l'utilisateur fait partie du groupe X alors il aura l'imprimante Y.
Il est possible également de faire avec un ordinateur.
Si l'ordinateur fait partie du groupe X alors il aura l'imprimante Y.

Plus d'informations : 4sysops.com/archives/deploying-printers-using-group-policy/

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.104 secondes
Propulsé par Kunena