======Microsoft - Windows - Printing - PowerShell - Snippets======
=====Get a list of printers with IP and driver=====
//Tested on Windows Server 2016. //
Get-Printer | `
Select-Object `
Name,
@{Label="IP";Expression={(Get-PrinterPort -Name $_.PortName).PrinterHostAddress}},
DriverName | `
Sort-Object Name
Example output:
Name IP DriverName
---- -- ----------
Brother MFC-7460DN 10.8.2.201 Brother Laser Type1 Class Driver
HP LaserJet 4050N 10.8.2.250 HP Universal Printing PCL 6 (v6.3.0)
Microsoft Print to PDF Microsoft Print To PDF
Microsoft XPS Document Writer Microsoft XPS Document Writer v4
Ricoh_MPC2004 10.8.2.190 RICOH PCL6 UniversalDriver V4.12
Xerox C7025 10.8.2.20 Xerox GPD PCL6 V3.9.520.6.0
=====Get information about printer ports=====
//Tested on Windows Server 2016. //
$arrPrinterPortProperties = "Name","PrinterHostAddress","PrinterHostIp","Protocol","PortNumber","SNMPCommunity","SNMPEnabled","SNMPIndex"
$objPrinterPorts = Get-Printerport
$objResult = @()
foreach ($objPrinterPort in $objPrinterPorts) {
$objPrinterCimInstanceProperties = (Get-PrinterPort -Name $objPrinterPort.Name).CimInstanceProperties
$objTemp = {} | Select-Object $arrPrinterPortProperties
$objDesiredPrinterProperties = $objPrinterCimInstanceProperties | Where-Object {$arrPrinterPortProperties -contains $_.Name} | Select-Object Name,Value
$objTemp.Name = $objPrinterPort.Name
$objTemp.PrinterHostAddress = ($objDesiredPrinterProperties | Where-Object {$_.Name -match "PrinterHostAddress"}).Value
$objTemp.PrinterHostIp = ($objDesiredPrinterProperties | Where-Object {$_.Name -eq "PrinterHostIp"}).Value
$objTemp.Protocol = ($objDesiredPrinterProperties | Where-Object {$_.Name -eq "Protocol"}).Value
$objTemp.PortNumber = ($objDesiredPrinterProperties | Where-Object {$_.Name -eq "PortNumber"}).Value
$objTemp.SNMPCommunity = ($objDesiredPrinterProperties | Where-Object {$_.Name -eq "SNMPCommunity"}).Value
$objTemp.SNMPEnabled = ($objDesiredPrinterProperties | Where-Object {$_.Name -eq "SNMPEnabled"}).Value
$objTemp.SNMPIndex = ($objDesiredPrinterProperties | Where-Object {$_.Name -eq "SNMPIndex"}).Value
if ( -Not ($objTemp.PrinterHostAddress -eq $null)) {
$objResult += $objTemp
}
}
$objResult | Format-Table -AutoSize
Example output:
Name PrinterHostAddress PrinterHostIp Protocol PortNumber SNMPCommunity SNMPEnabled SNMPIndex
---- ------------------ ------------- -------- ---------- ------------- ----------- ---------
10.8.2.190 10.8.2.190 1 9100 public True 1
10.8.2.190_1 10.8.2.190 1 9100 public True 1
10.8.2.20 10.8.2.20 2 515 public True 1
10.8.2.201 10.8.2.201 2 515 public True 1
10.8.2.20_1 10.8.2.20 2 515 public True 1
10.8.2.250 10.8.2.250 1 9100 public False 1
10.8.2.250_1 10.8.2.250 1 9100 public False 1