Как получить уникальный вывод с результатами двух командлетов (get-printer и get-printerport)? - PullRequest
0 голосов
/ 06 мая 2020

Мне нужно экспортировать список принтеров в файл. Он должен содержать такие значения, как Name, DriverName и т. Д. Из Get-Printer, а также значение PrinterHostAddress из командлета Get-PrinterPort. Я думаю, что значение Name из обоих командлетов можно использовать в качестве ключа для объединения. Я пробовал такие вещи, как:

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

Но это не работает.

Я знаю, я могу сделать это в два этапа и скопировать / вставить, но я хотел бы узнать, как сделать это за один шаг.

1 Ответ

0 голосов
/ 06 мая 2020

Выполните итерацию и выберите только нужные вам объекты портов:

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