ATTENTION: la méthode décrite ici est encore expérimentale et n'a été testée que par un petit nombre de personnes.
Depuis la version 24H2 de Windows 11, l'outils WMIC n'est plus fourni dans windows, il n'est donc plus possible d'utiliser la méthode d'installation locale des imprimantes par WPKG.
Il est possible d'installer les imprimantes avec des scripts Powershell.
Il est aussi possible, une fois une imprimante installée et configurée manuellement (choix couleur, format, code d'authentification à entrer,...), d'exporter les réglages sous forme d'un fichier. Le script powershell proposé plus bas permet d'importer ces réglages à chaque démarrage. La gestion des imprimantes est donc aussi pratique en locale qu'en mode serveur d'impression.
I Le principe de mise en place est le suivant:
On ajoute les drivers dans un dossier accéssible (comme L:\Progs\ro\drivers_imprimantes)
On place un dossier imprimantes dans /etc/sambaedu/applications/
On ajoute dans ce dossier un script Powershell par imprimante, après avoir indiqué les bonnes valeurs des variables (ip,nom de l'imprimante,etc).
On ajoute un fichier scripts.json qui indiquera quels scripts powershell sont à lancer, ainsi que les machines/parcs concernés.
Le script est lancé à chaque démarrage, installe l'imprimante si elle ne l'est pas, met en place les réglages.
On télécharge les drivers sur le site du fabriquant, et on les place sur un dossier réseau (ici c'est dans Progs\ro\drivers mais l'emplacement est provisoire).
Il faut faire un script powershell pour chaque copieur/imprimante.
A faire sur le se4fs, en root.
cd /etc/sambaedu/applications/
mkdir imprimantes
cd imprimantes
wget https://gitlab.sambaedu.org/sambaedu/sambaedu-doc/-/raw/main/pages/03.utiliser-se4/01.guide-administration/05.imprimantes/07.imprimantes_powershell/modele_printer.ps1
mv modele_printer.ps1 nom_du_copieur.ps1
chown -R www-admin:root /etc/sambaedu/applications/imprimantes
Il faut ensuite adapter toutes les variables en début de script. Ne rien modifier d'autre.
$nom_imprimante="Copieur 1 sdp1"
$nom_driver="Kyocera TASKalfa 5053ci KX"
#ATTENTION le nom du driver doit etre EXACTEMENT le meme que celui dans le fichier.inf
$chemin_driver="\\se4fs\progs\ro\drivers\printing\kyocera\Universal\64bit\OEMSETUP.INF"
$nom_port="172.20.150.71"
$ip_imprimante="172.20.150.71"
$export_reglages="\\se4fs\progs\ro\drivers\printing\kyocera\export_copieur1.dat"
ATTENTION: le nom du driver doit être EXACTEMENT le même que celui du fichier.inf du driver. Pour cela, l'ouvrir avec un éditeur de texte comme notepad++ et regarder la syntaxe du modèle.
Remarque: l'utilisation d'un fichier de réglage n'est absolument pas nécessaire, le script teste la présence de fichier et passe l'étape de réglage s'il n'y est pas.
Sur le se4fs en root.
cd /etc/sambaedu/applications/imprimantes/
wget https://gitlab.sambaedu.org/sambaedu/sambaedu-doc/-/raw/main/pages/03.utiliser-se4/01.guide-administration/05.imprimantes/07.imprimantes_powershell/scripts.json
chown -R www-admin:root /etc/sambaedu/applications/imprimantes
Il faut faire très attention à la syntaxe du fichier.
Quelques explications à propos du fichier scripts.json
[
{
"os": "windows",
"action": "startup",
"includes": [
"sdp1",
"p202-m75q-prof"
],
"excludes": [],
"file": "Copieur_1_sdp1.ps1",
"interpreter": "powershell"
},
{
"os": "windows",
"action": "startup",
"includes": [
"sdp2",
"p202-m75q-prof"
],
"excludes": [],
"file": "Copieur_2_sdp1.ps1",
"interpreter": "powershell"
},
{
"os": "windows",
"action": "startup",
"includes": [
"postes_profs",
"p202-m75q-prof"
],
"excludes": [],
"file": "Copieur_3_sdp1.ps1",
"interpreter": "powershell"
}
]
Il y a ici 3 copieurs (donc 3 blocs { }). Chacun est ici appliqué à un parc et à un poste spécifique pour l'exemple. On peut évidemment ajouter d'autres parcs et machines pour ce copieur, tout comme on peut ajouter d'autres scripts Powershell dans des blocs.
J'attire votre attention sur la présence de virgule à la fin des parc dans la rubrique includes, sauf sur la dernière. De même, pas de virgule à la fin du dernier bloc après le } . La syntaxe globale est [{bloc1},{bloc2},{bloc3},....,{blocx} ]
ATTENTION: Il faut impérativement redémarrer le service php8.2-fpm lorsqu'on modifie un script Powershell, ou le fichier scripts.json
sur le se4fs en root, taper:
service php8.2-fpm restart
On se connecte en admin sur un poste windows du parc attribué à un copieur. On fait tous les réglages souhaités
On lance dans l'invite de commande (en administrateur.)
rundll32 printui.dll PrintUIEntry /Ss /n "Copieur 1 sdp1" /a "\\se4fs\progs\ro\drivers\printing\kyocera\export_copieur1.dat"
Un fichier.dat est placé dans le dossier indiqué.
Il suffit de redémarrer le poste pour que les réglages s'appliquent. Il faut parfois un reboot supplémentaire
Le fichier de réglages n'est pas éditable, on doit donc recréer le fichier après chaque modification voulue sur l'imprimante.
L'import des réglages est fait à chaque démarrage.
La suppression des copieurs n'est pas encore géré de façon automatique, mais il suffit de supprimer le parc dans le scripts.json, puis de créer un fichier /etc/sambaedu/applications/imprimantes un fichier delete_nom_imprimante.ps1 contenant:
#On regarde si l'imprimante est présente
if ($localPrinters -contains "nom_imprimante") {
Remove-Printer -Name "Nom_imprimante" }
on éditera aussi scripts.json pour ajouter
{
"os": "windows",
"action": "startup",
"includes": [
"sdp1",
"p202-m75q-prof"
],
"excludes": [],
"file": "delete_nom_imprimante.ps1",
"interpreter": "powershell"
},
Il faut évidemment relancer le service php8.2-fpm
Si vous aviez déçjà déployé vos imprimantes par wpkg, alors vous pouvez faire cohabiter les deux méthodes.
Si vous installez une machine en W11 24H2, alors il faut décocher l'install wpkg sur le parc. WMIC n'étant pas en place. Le fichier temoin d'install c:\imprimante.txt ne sera pas créé, et l'installd e l'imprimante va se faire de multiples fois, créant des soucis d'impression.