Невозможно добавить драйвер принтера с помощью Add-PrinterDriver на сервере печати 2012 R2

Я пытаюсь настроить хост Windows Server 2012 R2 в качестве сервера печати. Я на начальном этапе пытаюсь добавить принтер в систему. Я пытаюсь сохранить это как PowerShell, насколько это возможно, но я прибегаю к использованию простых старых утилит.exe (особенно из-за недостатков в Add-WindowsDriver). На самом деле, я стараюсь изо всех сил, чтобы избежать GUI.

Версия Powershell 5.1.

До сих пор я выполнил эти шаги, пытаясь установить принтер:

  1. Скопировал файлы.inf, .cat и.cab на сервер
  2. Добавлен порт принтера для принтера: Add-PrinterPort -Name "TCP/IP_CanonIR" -PrinterHostAddress 10.0.0.60 -PortNumber 9100
  3. Добавлен драйвер принтера в Магазин драйверов Windows: pnputil.exe /a C:\PrintDrivers\Canon\Driver\driver.inf

Вот где я застрял. Я не могу использовать Add-PrinterDriver, Через Google я узнал, что мне сначала нужно добавить драйвер в WDS (что я сейчас и сделал с pnputil.exe) но я все еще не могу добавить это. я бегу Get-WindowsDriver и я вижу это вернулось. На основе OriginalFileName свойство возвращаемого объекта, я знаю расположение файла.inf в хранилище драйверов. Итак, я запускаю следующее:

Add-PrinterDriver -Name "Canon imageRUNNER ADVANCE" -InfPath "C:\Windows\System32\DriverStore\FileRepository\cns30ma64.inf_amd64_3fa1ebf9a5a06bfe\cns30ma64.inf"

Что это возвращает:

Add-PrinterDriver : The specified driver does not exist in the driver store.
+ CategoryInfo          : NotSpecified: (MSFT_PrinterDriver:ROOT/StandardCimv2/MSFT_PrinterDriver) [Add-PrinterDriver], CimException
+ FullyQualifiedErrorId : HRESULT 0x80070705,Add-PrinterDriver

Я также попытался указать значение Driver собственность, возвращенная Get-WindowsDriver в качестве предоставленного значения для -Name:

Add-PrinterDriver -Name "oem13.inf" -InfPath "C:\Windows\System32\DriverStore\FileRepository\cns30ma64.inf_amd64_3fa1ebf9a5a06bfe\cns30ma64.inf"

Это возвращает ту же ошибку. Я прочитал помощь для Add-PrinterDriver и это не очень полезно. Я знаю что -InfPath значение допустимо, так как это правильный путь, возвращаемый из Get-WindowsDriver, Единственное, что я указываю, это -Name, Из справки:

-Name <String>
    Specifies the name of the printer driver.

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

У кого-нибудь есть совет? Я поступаю об этом неправильно? Пожалуйста, дайте мне знать, если я могу предоставить любую другую соответствующую информацию.

1 ответ

Решение

Хорошо, я понял это. С -Name Параметр, вам нужно указать действительное имя для этого драйвера, в соответствии с доступными именами в INF-файле. Это имя отображается при выборе драйвера вручную при установке принтера. Так, например, если вы хотите добавить драйвер принтера для принтера Canon:

# Add driver to Windows Driver Store
pnputil.exe /a C:\Path\To\driver.inf

# Find driver full path
Get-WindowsDriver -All -Online | Where-Object {$_.OriginalFileName -like '*driver.inf'} | Select-Object -ExpandProperty OriginalFileName -OutVariable infPath
# Make sure that driver.inf matches the original driver .inf file you supplied

# Get valid driver names from inf file
Get-Content -Path $infPath

# Near the top of the previous output, you should see a list of driver name to model name mappings that looks like this:
;64-bit x64
[Canon.NTamd64]
"Canon Generic Plus PS3" = GENERICPS,,1284_CID_CA_PS3_COLOR_OIP

# Based on the model on the right, since I know that is the model I have I will use that driver name:
Add-PrinterDriver -Name "Canon Generic Plus PS3" -InfPath $infPath

# You're done. Now you can run Get-PrinterDriver to be sure that it is available:
Get-PrinterDriver

Name                    PrinterEnvironment MajorVersion Manufacturer
----                    ------------------ ------------ ------------
Canon Generic Plus PS3  Windows x64        3            Canon

# You can then begin to install your printers using your newly added printer driver:
Add-Printer -DriverName "Canon Generic Plus PS3" -Location "Customer Service Department" -Shared -ShareName "Canon IR-ADV in Customer Service" -Name "Canon IR-ADV in Customer Service" -Published -PortName "TCP_10.0.0.60"
# Be sure you have already configured a printer port for the printer using the Add-PrinterPort cmdlet, and use that in the above command
Другие вопросы по тегам