Question Mise à jour de drivers d'imprimantes
- Boulétreau
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 15 ans 3 semaines #9015
par Boulétreau
Mise à jour de drivers d'imprimantes a été créé par Boulétreau
Bien le bonjour amis powershelleurs
Un problème s'est posé à un de mes collègues (il y a quelques jours) lors de la mise à jour de drivers \"HP Universal Printing PCL 6\" par les drivers \"HP Universal Printing PCL 6 (v5.2)\" sur le serveur d'impression.
A lieu de mettre à jour le serveur, il y a eu un ajout de drivers.
Se faire le changement à la main (environ 200 imprimantes) c'est assez long. Je lui ai donc proposé ce script. Il y aura surement quelques mise à jour (tous se perfectionne) mais disons qu'il est déjà fonctionnel et j'espère qu'il pourra aider certains dans leur quotidien
[code:1]Function Recup-Imp
{
param([string]$NouveauDriver, [string]$AncienDriver)
#Récupération des imprimantes en fonction de l'ancien driver
$IMP = Get-WmiObject -class Win32_Printer -computername \".\" -namespace \"root\CIMV2\" -Filter \"drivername='$AncienDriver'\"
foreach($imprimante in $IMP){
$NomImp=$imprimante.Name
if($NomImp){
#Obtient l'imprimante
$Driver = Get-WmiObject -Class Win32_Printer -ComputerName \".\" -Namespace root\CIMV2 -Filter \"name='$NomImp'\"
#change le nom du driver
$Driver.DriverName = $NouveauDriver
#effectue le changement
[Void]$Driver.Put()
#Rapport dans le logg puis dans la console
\"$(Get-Date) | $NomImp a maintenant '$NouveauDriver' comme driver.\">> \".\$(Get-Date -Format dd-MM-yyyy).log\"
Write-Host $(Get-Date)\" | $NomImp a maintenant '$NouveauDriver' comme driver.\"
}
}
}
Clear-Host
$Liste = Import-Csv \"liste.csv\" -Delimiter \";\"
foreach($ligne in $Liste){
Recup-Imp -AncienDriver $ligne.Ancien -NouveauDriver $ligne.Nouveau
}[/code:1]
Pourquoi utiliser un CSV? Je trouvais ça plus sympa qu'un simple fichier texte
Au niveau des log j'ai fais un truc à l'arrache juste pour garder les informations : heure de changement du drivers, nom de l'imprimante et nouveau driver.
J'espère que ça vous plaira.
Un problème s'est posé à un de mes collègues (il y a quelques jours) lors de la mise à jour de drivers \"HP Universal Printing PCL 6\" par les drivers \"HP Universal Printing PCL 6 (v5.2)\" sur le serveur d'impression.
A lieu de mettre à jour le serveur, il y a eu un ajout de drivers.
Se faire le changement à la main (environ 200 imprimantes) c'est assez long. Je lui ai donc proposé ce script. Il y aura surement quelques mise à jour (tous se perfectionne) mais disons qu'il est déjà fonctionnel et j'espère qu'il pourra aider certains dans leur quotidien
[code:1]Function Recup-Imp
{
param([string]$NouveauDriver, [string]$AncienDriver)
#Récupération des imprimantes en fonction de l'ancien driver
$IMP = Get-WmiObject -class Win32_Printer -computername \".\" -namespace \"root\CIMV2\" -Filter \"drivername='$AncienDriver'\"
foreach($imprimante in $IMP){
$NomImp=$imprimante.Name
if($NomImp){
#Obtient l'imprimante
$Driver = Get-WmiObject -Class Win32_Printer -ComputerName \".\" -Namespace root\CIMV2 -Filter \"name='$NomImp'\"
#change le nom du driver
$Driver.DriverName = $NouveauDriver
#effectue le changement
[Void]$Driver.Put()
#Rapport dans le logg puis dans la console
\"$(Get-Date) | $NomImp a maintenant '$NouveauDriver' comme driver.\">> \".\$(Get-Date -Format dd-MM-yyyy).log\"
Write-Host $(Get-Date)\" | $NomImp a maintenant '$NouveauDriver' comme driver.\"
}
}
}
Clear-Host
$Liste = Import-Csv \"liste.csv\" -Delimiter \";\"
foreach($ligne in $Liste){
Recup-Imp -AncienDriver $ligne.Ancien -NouveauDriver $ligne.Nouveau
}[/code:1]
Pourquoi utiliser un CSV? Je trouvais ça plus sympa qu'un simple fichier texte
Au niveau des log j'ai fais un truc à l'arrache juste pour garder les informations : heure de changement du drivers, nom de l'imprimante et nouveau driver.
J'espère que ça vous plaira.
La pièce jointe ChangeDrivers_console.ps1 est absente ou indisponible
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- Boulétreau
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 15 ans 3 semaines #9020
par Boulétreau
Réponse de Boulétreau sur le sujet Re:Mise à jour de drivers d'imprimantes
J'allais oublier d'indiquer la structure du CSV :
Ancien;Nouveau
HP Universal Printing PCL 6;HP Universal Printing PCL 6 (v5.2)
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 15 ans 3 semaines #9028
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:Mise à jour de drivers d'imprimantes
Salut Boulette,
Merci pour ton script, qui peut il est vrai sauver des heures de boulot a qqun...
Par contre pourrais tu etre un peu plus explicite sur la mauvaise manip qui s'est produite ? Ainsi je comprendrais mieux l'objectif du script, qui est si j'ai bien compris de changer les drivers de toutes les imprimantes.
Arnaud
Merci pour ton script, qui peut il est vrai sauver des heures de boulot a qqun...
Par contre pourrais tu etre un peu plus explicite sur la mauvaise manip qui s'est produite ? Ainsi je comprendrais mieux l'objectif du script, qui est si j'ai bien compris de changer les drivers de toutes les imprimantes.
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Boulétreau
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 15 ans 3 semaines #9030
par Boulétreau
Réponse de Boulétreau sur le sujet Re:Mise à jour de drivers d'imprimantes
Bonjour,
Alors je ne suis pas un expert en serveur d'impression. A ce que mon collègue m'a expliqué, pour une imprimante qui est installée sur un serveur, on a la possibilité de mettre à jour son driver et lorsque l'utilisateur utilise cette même imprimante, le poste récupère automatiquement la mise à jour du driver (en gros il me semble que c'est cela).
Sauf que lors de la mise à jour de ce driver HP Universal..., au lieu de garder le même nom de driver et de mettre à jour ce driver, il y a eu un deuxième driver mais (v5.2).
Ce qui aurai obligé à faire le changement de driver sur toutes les imprimantes, à la main.
Je ne sais malheureusement pas si ce problème de deuxième driver HP Universal... est du à une fausse manip ou pas.
Mais si nous avons eu le problème il se peut que cela arrive aussi à d'autre personne. D'où mon poste.
J'espère que cela t'éclairera un peu plus.
*********************************************************
Pour le CSV :
[code:1]$Liste = Import-Csv \"liste.csv\" -Delimiter \";\"
foreach($ligne in $Liste){
Recup-Imp -AncienDriver $ligne.Ancien -NouveauDriver $ligne.Nouveau
}[/code:1]
Je récupère le nom de l'ancien et du nouveau driver, et que je met en paramètre dans Recup-IMP. Le nom est pas forcément explicite... Mais j'ai pas beaucoup d'imagination
[code:1]$IMP = Get-WmiObject -class Win32_Printer -computername \".\" -namespace \"root\CIMV2\" -Filter \"drivername='$AncienDriver'\"[/code:1]
Je fait un premier filtre pour récupérer les imprimantes qui ont le drivers à changer. Il faut faire attention à la casse des caractères.
[code:1]$Driver = Get-WmiObject -Class Win32_Printer -ComputerName \".\" -Namespace root\CIMV2 -Filter \"name='$NomImp'\"
#change le nom du driver
$Driver.DriverName = $NouveauDriver
#effectue le changement
[Void]$Driver.Put()[/code:1]
Maintenant que j'ai mes imprimantes, je change le driver par le nouveau.
Je fais ensuite un petit log pour garder l'heure du changement de driver et j'affiche aussi dans la console. Cela permet de se rendre compte ou en est le script. J'aurai pu faire un affichage du genre \"50 sur 110 ont été changées\" mais j'y pense seulement maintenant
Alors je ne suis pas un expert en serveur d'impression. A ce que mon collègue m'a expliqué, pour une imprimante qui est installée sur un serveur, on a la possibilité de mettre à jour son driver et lorsque l'utilisateur utilise cette même imprimante, le poste récupère automatiquement la mise à jour du driver (en gros il me semble que c'est cela).
Sauf que lors de la mise à jour de ce driver HP Universal..., au lieu de garder le même nom de driver et de mettre à jour ce driver, il y a eu un deuxième driver mais (v5.2).
Ce qui aurai obligé à faire le changement de driver sur toutes les imprimantes, à la main.
Je ne sais malheureusement pas si ce problème de deuxième driver HP Universal... est du à une fausse manip ou pas.
Mais si nous avons eu le problème il se peut que cela arrive aussi à d'autre personne. D'où mon poste.
J'espère que cela t'éclairera un peu plus.
*********************************************************
Pour le CSV :
Pour le script :Ancien;Nouveau
HP Universal Printing PCL 6;HP Universal Printing PCL 6 (v5.2)
[code:1]$Liste = Import-Csv \"liste.csv\" -Delimiter \";\"
foreach($ligne in $Liste){
Recup-Imp -AncienDriver $ligne.Ancien -NouveauDriver $ligne.Nouveau
}[/code:1]
Je récupère le nom de l'ancien et du nouveau driver, et que je met en paramètre dans Recup-IMP. Le nom est pas forcément explicite... Mais j'ai pas beaucoup d'imagination
[code:1]$IMP = Get-WmiObject -class Win32_Printer -computername \".\" -namespace \"root\CIMV2\" -Filter \"drivername='$AncienDriver'\"[/code:1]
Je fait un premier filtre pour récupérer les imprimantes qui ont le drivers à changer. Il faut faire attention à la casse des caractères.
[code:1]$Driver = Get-WmiObject -Class Win32_Printer -ComputerName \".\" -Namespace root\CIMV2 -Filter \"name='$NomImp'\"
#change le nom du driver
$Driver.DriverName = $NouveauDriver
#effectue le changement
[Void]$Driver.Put()[/code:1]
Maintenant que j'ai mes imprimantes, je change le driver par le nouveau.
Je fais ensuite un petit log pour garder l'heure du changement de driver et j'affiche aussi dans la console. Cela permet de se rendre compte ou en est le script. J'aurai pu faire un affichage du genre \"50 sur 110 ont été changées\" mais j'y pense seulement maintenant
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.040 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Contributions à la communauté
- Mise à jour de drivers d'imprimantes