Я пытаюсь подготовить сценарий PowerShell для установки принтеров. Это будет для автоматизированной задачи, в которой имена принтеров и IP-адреса будут предоставлены по мере доступности. Похоже, что большая часть скрипта работает, но чего-то не хватает. Ниже скрипт, потом уточню пропущенный.
$knownPrinterDriver = "DTC4500e Card Printer"
$ipPort = 5400
$finalPortName = "MyPort_5400"
$ipAddress = "192.168.30.13"
$finalPrinterName = "Printer1"
$goodDriver = Get-PrinterDriver | Where-Object { $_.Name -eq $knownPrinterDriver }
if( $goodDriver.Count -eq 0 )
{
# no printer driver found
return -1
}
# SHOULD only be ONE, so get it as reference
$oneDriver = $goodDriver[0]
# using the ` backtick mark as continuation line
Add-PrinterPort `
-Name $finalPortName `
-PrinterHostAddress $ipAddress `
-PortNumber $ipPort
# Re-check if printer was actually loaded or not.
$availPorts = Get-PrinterPort | Where-Object { $_.Name -eq $finalPortName }
if( $availPorts.Count -eq 0 )
{
return -2
}
$onePort = $availPorts[0]
Add-Printer `
-DriverName $oneDriver.Name `
-Name $finalPrinterName `
-PortName $onePort.Name
# Re-check if printer was actually loaded or not.
$availPrinters = Get-Printer | Where-Object { $_.Name -eq $finalPrinterName }
if( $availPrinters.Count -eq 0 )
{
return -3
}
return 1
Итак, после запуска скрипта он создает порт, без проблем. Создает принтер, связанный с портом, без проблем.
Теперь я перехожу в "Принтеры и настройки".
(очевидно, отредактировано, чтобы показать и то, и другое). Вы можете видеть, что на одном принтере отображается опция удаления устройства, а на сценарии - нет. Также вторая часть. При попытке запустить другую программу, опрашивающую устройство, отображается состояние «неизвестно», «готово» или «отключено».
Предложения? Ценить это.
Вопрос 1
В вашем командлете Add-PrinterPort вы пропустите часть SNMP, это тот параметр, который заставит диспетчер очереди печати вытыкать принтер для состояния. (Отключение части SNMP также отключит все программное обеспечение монитора печати, которое поставляется с драйвером)
-SNMP Включает SNMP и указывает индекс для управления портом принтера TCP / IP.
-SNMPCсообщество Задает имя сообщества SNMP для управления портом принтера TCP / IP.
вопрос 2
Ваш сценарий создает локальный порт TCP / IP, поэтому только администратор может удалить его или нет, проверьте права пользователя / UAC, поскольку я подозреваю, что другой принтер является подключенным принтером, а не локальным принтером.