Question
Mappage imprimante
- witness
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 120
- Remerciements reçus 1
il y a 1 an 11 mois - il y a 1 an 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.
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 1 an 11 mois par witness.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6248
- Remerciements reçus 64
il y a 1 an 11 mois #30841
par Laurent Dardenne
Tutoriels PowerShell
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
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.
- witness
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 120
- Remerciements reçus 1
il y a 1 an 11 mois #30847
par witness
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:
Ça peut être plus court en powershell lol ?
Merci d'avance
Réponse de witness sur le sujet Mappage imprimante
Salut Laurent,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
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6248
- Remerciements reçus 64
il y a 1 an 11 mois #30850
par Laurent Dardenne
Tutoriels PowerShell
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.
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.
- witness
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 120
- Remerciements reçus 1
il y a 1 an 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.
- Damien Commenge
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 65
- Remerciements reçus 4
il y a 1 an 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/
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.093 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Mappage imprimante