如何使用两个cmdlet(get-printer和get-printerport)的结果获得唯一的输出?

时间:2020-05-06 06:26:30

标签: powershell printers

我需要将打印机列表导出到文件中。它必须包含Get-Printer中的Name,DriverName等值,还必须包含cmdlet Get-PrinterPort中的值PrinterHostAddress。我认为两个cmdlet的值'Name'都可以用作创建联合的键。 我已经尝试过类似的事情:

$a = get-printer
$b = get-printerport
Compare-Object $a $b -PassThru -IncludeEqual | Select Name, Comment, Location, DriverName, PrinterHostAddres

但是它不起作用。

我知道,我可以分两个步骤完成操作,然后复制/粘贴,但是我想一步一步学习操作方法。

1 个答案:

答案 0 :(得分:0)

迭代并仅选择所需的端口对象:

$Printers = Get-Printer

$Printers | ForEach-Object {
    #Get the printer port
    $port = Get-PrinterPort | Where-Object -Property Name -like $_.PortName

    [pscustomobject]@{
        PrinterName = $_.Name
        Comment = $_.Comment
        Location = $_.Location
        Driver = $_.DriverName
        PortName = $port.Name
        IPAddress = $port.PrinterHostAddress
    }
}