Créer et configurer une imprimante réseau en PowerShell

Illustration of network printer setup using PowerShell scripting

L’administration d’un parc informatique implique fréquemment le déploiement de périphériques d’impression, que ce soit lors de la mise en service d’un nouveau serveur d’impression ou du renouvellement d’un parc de copieurs. Passer par l’interface graphique de gestion des impressions devient vite chronophage dès lors qu’il faut déclarer des dizaines de files d’attente. PowerShell permet d’automatiser l’intégralité du processus : création du port réseau standard, association du pilote, paramétrage du partage et déploiement en masse.

La méthode moderne : le module PrintManagement

Sur les versions actuelles de Windows et Windows Server, Microsoft fournit nativement le module PrintManagement. Ce module simplifie drastiquement les manipulations autrefois confiées à WMI ou aux scripts VBScript.

1. Vérification du pilote d’impression

Avant d’ajouter une imprimante, son pilote doit impérativement être installé dans le magasin local de la machine cible. Vous pouvez lister les pilotes disponibles avec la commande suivante :

Get-PrinterDriver

Si le pilote requis n’est pas encore présent, ajoutez-le avec Add-PrinterDriver -Name « Nom Exact Du Pilote » après avoir importé son package INF dans le magasin de pilotes.

2. Création du port TCP/IP

Une imprimante réseau communique généralement via un port TCP/IP standard (port 9100 Raw ou LPR). Pour déclarer ce port d’écoute sur le système, utilisez la commande Add-PrinterPort :

Add-PrinterPort -Name « IP_192.168.1.50 » -PrinterHostAddress « 192.168.1.50 »

Par défaut, cette commande initialise un port Raw standard sur le port 9100 avec le protocole SNMP désactivé si l’adresse ne répond pas immédiatement lors de la création.

3. Création et partage de l’imprimante

Une fois le port créé et le pilote identifié, il ne reste plus qu’à instancier la file d’impression. Si vous opérez sur un serveur d’impression, vous pouvez activer le partage réseau directement :

Add-Printer -Name « HP-Compta » -DriverName « HP Universal Printing PCL 6 » -PortName « IP_192.168.1.50 » -Shared -ShareName « HP-Compta » -Location « Bâtiment A – Étage 1 »

Si vous intervenez à distance sur un serveur dédié, vous pouvez exécuter ces commandes au sein d’une session distante en choisissant d’acceder à Windows 2008 en ligne de commande à distance ou en utilisant Enter-PSSession.

L’alternative par WMI pour les systèmes anciens

Sur des environnements plus anciens dépourvus des cmdlets modernes, les classes WMI Win32_TCPIPPrinterPort et Win32_Printer restent fonctionnelles. La démarche repose sur l’instanciation manuelle d’objets :

$port = ([WMICLASS] »ROOT\cimv2:Win32_TCPIPPrinterPort »).createInstance()
$port.Name = « IP_192.168.1.50 »
$port.HostAddress = « 192.168.1.50 »
$port.PortNumber = 9100
$port.Protocol = 1
$port.SNMPEnabled = $false
$port.Put()

On applique le même principe avec Win32_Printer pour créer l’instance d’impression et configurer les propriétés Shared, ShareName et DeviceID. Bien que robuste, cette approche verbeuse s’avère aujourd’hui supplantée par les commandes dédiées, tout comme les outils en ligne de commande traditionnels décrits dans nos lignes de commandes indémodables Windows.

Déploiement en masse via un fichier CSV

L’intérêt majeur du script réside dans le traitement par lots. En préparant un fichier imprimantes.csv contenant les colonnes Nom, IP, Pilote et Emplacement, une boucle suffit pour tout déployer automatiquement :

Import-Csv -Path « C:\Temp\imprimantes.csv » -Delimiter « ; » | ForEach-Object {
    $portName = « IP_ » + $_.IP
    Add-PrinterPort -Name $portName -PrinterHostAddress $_.IP
    Add-Printer -Name $_.Nom -DriverName $_.Pilote -PortName $portName -Location $_.Emplacement -Shared -ShareName $_.Nom
}

Connexion de l’imprimante sur les postes clients

Pour mapper l’imprimante partagée sur les postes utilisateurs sans passer par une stratégie de groupe (GPO), PowerShell permet d’exécuter localement la commande suivante :

Add-Printer -ConnectionName « \\serveur-print\HP-Compta »

Cette approche garantit un déploiement homogène, rapide et sans risque d’erreur de saisie dans les adresses IP ou les paramètres de partage.

À lire aussi