Comment installer un serveur d’impression avec Powershell ?
Sommaire
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
tu as fais ca dans le cadre d’une installation core ou nano server ?
Salut,
C’était sur un serveur avec une interface graphique, mais sur Core ça fonctionnera pareil 🙂
Pour Nano, à voir ?
Cordialement,
Florian
# 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
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 !
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