2015-12-21 5 views
1

Я новичок в PowerShell, и я пытаюсь написать сценарий, который будет устанавливать для меня серии сетевых принтеров. Чтобы начать работу, я искал способ найти все общие принтеры на сервере печати, а затем установить их локально. Вот что-то, что не работает, но переводит идею. Следует отметить, что этот скрипт запускается на сервере win 2008.Обнаружение и установка сетевых принтеров через powershell

Get-WmiObject -computername $printServer -class Win32_Printer | Where {$_.name -notlike "Microsoft*"} | add-printer -connectionname \\$_.systemName\$_.shareName 
+1

Для работы в конвейере требуется 'ForEach-Object' для' $ _'. Замените последнюю команду '% {Add-Printer -ConnectionName \\ $ _. SystemName \ $ _. ShareName}' ('%' - это псевдоним для 'ForEach-Object') - непроверенный. Если это не поможет, я постараюсь поиграть с vm и дать лучший ответ. – sodawillow

+0

Благодарим вас за каждое предложение. Я думаю, что есть еще две части, которые мне нужно выяснить (в дополнение к вашему для каждого совета). Один из них - конкатенация струны (я не верю, что так, как я это сделал, это сработает). Во-вторых, командлет Add-Printer, похоже, не существует на сервере 2008. – donL

ответ

0

У меня сейчас нет возможности проверить это, но я считаю, что это может сработать для вас.

$printClass = [wmiclass]"win32_printer" 

Get-WmiObject -computername $printServer -class Win32_Printer | ? {$_.name -notlike "Microsoft*"} | % { $printClass.AddPrinterConnection([string]::Concat("\\", $_.systemName, "\", $_.shareName)) } 
Смежные вопросы