Serveur d’impression : lister les imprimantes avec le nom et l’adresse IP


I. Présentation

Dans ce tutoriel, nous allons voir comment utiliser PowerShell pour lister les imprimantes installées sur un serveur d’impression Windows, en indiquant le nom et l’adresse IP.

Lorsque l’on utilise la console Gestion des impressions, on peut afficher plusieurs informations comme le nom de l’imprimante, le nom du pilote, le nom du port, etc… Mais pas l’adresse IP. C’est dommage, surtout si vous ne mettez pas l’adresse IP dans le nom de vos ports.

Encore une fois, PowerShell va nous sauver la mise, car avec un petit bout de code de quelques lignes, on va pouvoir lister les imprimantes et obtenir l’adresse IP !

II. PowerShell : Get-Printer et Get-PrinterPort

En PowerShell, on peut lister les imprimantes avec la commande Get-Printer.

Get-Printer

Elle nous retourne différentes propriétés, un peu dans le même esprit que la console Gestion des impressions.

Nous avons aussi un autre cmdlet, nommé Get-PrinterPort, qui lui retourne des informations sur les ports. Intéressant… d’autant plus que l’on peut avoir le nom du port, mais aussi l’adresse IP en regardant la propriété PrinterHostAddress.

Get-PrinterPort

Pour obtenir l’adresse IP d’une imprimante, il faut spécifier le nom du port de l’imprimante grâce au paramètre -Name (ou avec un filtre Where, mais c’est moins efficient). Puis, récupérer seulement la propriété PrinterHostAddress, comme ceci :

(Get-PrinterPort -Name "MonPortNumero1" ).PrinterHostAddress

Nous avons tout ce qu’il nous faut, sauf que l’on a le nom de l’imprimante d’une part, et l’adresse IP du port de l’autre. Il ne reste plus qu’à faire opérer la magie de PowerShell pour ressortir un joli tableau avec nos deux informations, grâce à un objet personnalisé.

Nous récupérer la liste des imprimantes et effectuer une boucle Foreach.

Get-Printer | Foreach{ <code> }

Au sein de cette boucle, nous allons construire notre objet personnalisé et il sera alimenté à chaque tour de boucle. Il aura deux propriétés (mais on pourrait ajouter d’autres champs) : le nom et l’adresse IP.

Ce qui nous donne le bout de code suivant :

Get-Printer | Foreach{

   $PrinterName = $_.Name
   $PrinterPort = $_.PortName
   $PrinterIPAddress = (Get-PrinterPort -Name $PrinterPort).PrinterHostAddress

   New-Object PSObject -Property @{
      "Nom" = $PrinterName
      "AdresseIP" = $PrinterIPAddress
   }

   Clear-Variable PrinterIPAddress
}

Si vous souhaitez une sortie plus sympa, effectuez un export CSV de cette liste ou ajoutez « | Out-GridView » après l’accolade finale.

Voilà, le tour est joué !

Source link

Mourad ELGORMA

Fondateur de summarynetworks, passionné des nouvelles technologies et des métiers de Réseautique , Master en réseaux et système de télécommunications. ,j’ai affaire à Pascal, Delphi, Java, MATLAB, php …Connaissance du protocole TCP / IP, des applications Ethernet, des WLAN …Planification, installation et dépannage de problèmes de réseau informatique……Installez, configurez et dépannez les périphériques Cisco IOS. Surveillez les performances du réseau et isolez les défaillances du réseau. VLANs, protocoles de routage (RIPv2, EIGRP, OSPF.)…..Manipuler des systèmes embarqués (matériel et logiciel ex: Beaglebone Black)…Linux (Ubuntu, kali, serveur Mandriva Fedora, …). Microsoft (Windows, Windows Server 2003). ……Paquet tracer, GNS3, VMware Workstation, Virtual Box, Filezilla (client / serveur), EasyPhp, serveur Wamp,Le système de gestion WORDPRESS………Installation des caméras de surveillance ( technologie hikvision DVR………..). ,

Laisser un commentaire