Получить имя общего ресурса принтера по умолчанию с Powershell в переменной

Я пытаюсь сохранить текущий принтер по умолчанию в переменной Powershell, чтобы добавить это имя обратно, используя другой сервер печати. Команда, которую я использую для хранения этого имени:

$default_printer = Get-WMIObject -Query " SELECT * FROM Win32_Printer WHERE Default=$true" | where{$_.Name -like "*\\*"} | select sharename

Что обеспечит меня:

sharename
---------
WI_IT-Test

Проблема возникает, когда я пытаюсь настроить новый принтер с помощью команды:

Add-Printer -ConnectionName \\printsrv01\$default_printer

Я считаю, что когда я устанавливаю переменную в начале, она также сохраняет строку «sharename ---------», а также имя принтера. Как мне только получить имя принтера, а не...

sharename
 ---------

Любая помощь будет оценена по достоинству!


person genero    schedule 21.03.2019    source источник
comment
Я думаю, вы хотите использовать параметр -ExpandProperty при выборе. Это выбирает только значение, а не объект ключ/значение. то есть ... | select -ExpandProperty sharename.   -  person hsimah    schedule 22.03.2019


Ответы (1)


Select-Object создаст PSCustomObject ключей/значений. Я бы рекомендовал два варианта:

  1. Используйте ExpandProperty, чтобы вернуть только значение sharename. то есть ... | select -expandproperty sharename.
  2. свойство sharename. то есть Add-Printer -ConnectionName "\\printsrv01\$($default_printer.sharename)"

В вашем случае вам нужно одно свойство, поэтому первый вариант хорош. Если вы выбираете несколько свойств, последний путь.

person hsimah    schedule 25.03.2019
comment
Спасибо. В этом случае хитростью было \\printsrv01\$($default_printer.sharename) без кавычек. :) Спасибо еще раз! - person genero; 27.03.2019