Comment installer un serveur d’impression avec Powershell ?

I. Présentation

Si vous cherchez comment installer un serveur d'impression en ligne de commande sous Windows Server, le tout avec PowerShell, alors cet article est fait pour vous !

Ce tutoriel fait suite à celui publié précédemment et qui explique comment déployer un serveur d'impression à l'aide de l'interface graphique, retrouvez notre tutoriel à ce sujet : Serveur d'impression sous Windows Server

II. Préparation du serveur

Il va falloir commencer par préparer le serveur, notamment en lui attribuant un nom et en le mettant dans le domaine... Libre à vous de le faire, soit en interface graphique ou en PowerShell. Voici comment renommer le serveur et l'intégrer dans un domaine :

Rename-Computer -NewName "SRV-PRINT-01"
Add-Computer -DomainName "it-connect.local"

A la suite de ces deux modifications, vous devez redémarrer le serveur :

Restart-Computer

Lorsque le serveur est prêt, nous pouvons passer à la suite...

? Configurer Windows Server en ligne de commande

III. Installer le rôle "Print Server" avec PowerShell

Pour ajouter la fonctionnalité de serveur d'impression sur notre serveur Windows, nous allons utiliser le cmdlet Install-WindowsFeature et activer la fonctionnalité Print-Server. Nous allons également installer la console de gestion (IncludeManagementTools)

Install-WindowsFeature -Name Print-Server -IncludeManagementTools

Si cette étape se déroule correctement, passez à la suite...

IV. Configurer le serveur d'impression avec PowerShell

Maintenant que le rôle est installé, nous allons ajouter un pilote d'impression dans un premier temps, puis ensuite nous allons créer un port TCP/IP, et, pour finir, une imprimante sera ajoutée sur le serveur d'impression.

A. Ajouter un pilote d'impression

Pour ajouter un pilote dans le magasin de pilotes, nous allons utiliser l'outil PnPUtil qui sert à gérer le driver store de Windows. Voici comment ajouter le pilote qui se trouve à cet emplacement : C:\Pilotes\HP-PCL6-UnPrint.inf.

pnputil.exe -i -a "C:\Pilotes\HP-PCL6-UnPrint.inf"

Le pilote est désormais dans le magasin de pilotes, pour l'ajouter dans le serveur d'impression, nous allons utiliser le cmdlet "Add-PrinterDriver". Il faut indiquer le nom officiel du pilote pour cela, par exemple :

Add-PrinterDriver –Name "HP PCL6 Universal Printer"

 

B. Créer un port TCP/IP

Nous allons créer un nouveau port TCP/IP sur le serveur d'impression puisqu'il s'agit d'une imprimante réseau.  Cette fois-ci, le cmdlet à utiliser est Add-PrinterPort. Pour cet exemple, je vais créer un port nommé "HP-01-192.168.200.1" associé à l'adresse IP "192.168.200.1"

Add-PrinterPort -Name "HP-01-192.168.200.1" -PrinterHostAddress "192.168.200.1"

 

C. Ajouter une nouvelle imprimante

Maintenant que nous avons le pilote et le port TCP/IP, nous allons pouvoir créer l'imprimante. Le cmdlet Add-Printer sera notre alliée pour cette opération ?

Dans cet exemple, je vais créer l'imprimante "HP-01-Commercial" qui sera également partagée sous ce nom. Elle va s'appuyer sur le pilote "HP PCL6 Universal Printer" et le port TCP/IP créé précédemment. Nous allons en profiter pour lister cette imprimante dans l'Annuaire Active Directory en précisant le paramètre -Published. Enfin, l'emplacement de l'imprimante sera déterminé grâce au paramètre -Location.

Voici la commande correspondante :

Add-printer -Name "HP-01-Commercial" -DriverName "HP PCL6 Universal Printer" -Shared -ShareName "HP-01-Commercial" -PortName "HP-01-192.168.200.1" –Published -Location "Site Caen - Service Commercial"

Si vous jetez un coup d'oeil dans la console de gestion des impressions, votre imprimante doit apparaître. Sinon, le cmdlet Get-Printer sert à lister les imprimantes installées sur le serveur ?

Get-Printer

En complément, voici quelques cmdlets utiles :

  • Get-PrinterDriver : lister les pilotes intégrés au serveur d'impression
  • Get-PrinterPort : lister les ports déclarés sur le serveur d'impression
  • Get-PrintJob -PrinterName "HP-01-Commercial" : lister les jobs d'impression en cours sur une imprimante

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

Nombre de posts de cet auteur : 5558.Voir tous les posts

5 thoughts on “Comment installer un serveur d’impression avec Powershell ?

  • tu as fais ca dans le cadre d’une installation core ou nano server ?

    Répondre
    • Salut,
      C’était sur un serveur avec une interface graphique, mais sur Core ça fonctionnera pareil 🙂
      Pour Nano, à voir ?

      Cordialement,
      Florian

      Répondre
  • # Emplacement original pour le placer dans le driverstore
    $originaldriverpath = « E:\HP_Color_LaserJet_Pro_MFP_M477\hpne512a_x64.inf »
    $nomPublié = (pnputil -a $originaldriverpath | select-string « Nom publié »).tostring().split( » « )[-1]

    # Un fois dans le driverstore on récupère le nom publié par le pnputil dans les windowsdrivers
    Get-windowsdriver -all -online |
    where {$_.driver -like $nomPublié} |
    Select-Object -ExpandProperty OriginalFileName -OutVariable infPath # On en récupère le chemin du inf dans le dossier c:\system32\driverstore

    # On ouvre alors le fichier INF et on recherche le champ PRINTER1 pour récupérer le drivername
    $drivername = (Get-Content -Path $infPath | select-string « PRINTER1 =  » -SimpleMatch)[0].tostring().split(« = »)[1].replace(« ` » », » »).trim()
    #On ajoute ENFIN le PrinterDriver
    Add-PrinterDriver -Name $drivername -InfPath $infPath

    Répondre
  • Salut,
    Est ce que c’est possible d’afficher l’adresse IP de tous les imprimantes avec un script ?
    Si oui, s’il vous plait pouvez vous m’aiguiller ?
    Je dois faire un script pour lister adresse IP de tous les imprimantes sur le serveur d’impression.

    Merci à l’avance !

    Répondre
    • Hello,
      Cela devrait t’aider :

      Get-Printer | Foreach{
      $PrinterName = $_.Name
      $PrinterPort = $_.PortName
      $PrinterIPAddress = (Get-PrinterPort | Where{ $_.Name -eq $PrinterPort }).PrinterHostAddress
      New-Object PSObject -Property @{
      "Nom" = $PrinterName
      "AdresseIP" = $PrinterIPAddress
      }
      Clear-Variable PrinterIPAddress
      }

      Bon courage!
      Florian

      Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.