【问题标题】:How to get a unique output with the results of two cmdlets (get-printer and get-printerport)?如何使用两个 cmdlet(get-printer 和 get-printerport)的结果获得唯一的输出?
【发布时间】:2020-05-06 06:26:30
【问题描述】:

我需要将打印机列表导出到文件中。它必须包含来自 Get-Printer 的 Name、DriverName 等值,还必须包含来自 cmdlet Get-PrinterPort 的值 PrinterHostAddress。我认为两个 cmdlet 中的值“名称”可以用作建立联合的关键。 我试过这样的事情:

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

但它不起作用。

我知道,我可以分两步完成并复制/粘贴,但我想学习如何一步完成。

【问题讨论】:

  • Get-Printerport 返回的对象没有 PrinterHostAddress 属性?
  • Get-PrinterPort 返回的对象没有 Comment 或 Location 等属性。 Get-Printer 不返回 PortNumber 也不返回 PrinterHostAddress。
  • 见下方答案

标签: powershell printers


【解决方案1】:

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

$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
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多