Невозможно добавить драйвер принтера с помощью Add-PrinterDriver на сервере печати 2012 R2
Я пытаюсь настроить хост Windows Server 2012 R2 в качестве сервера печати. Я на начальном этапе пытаюсь добавить принтер в систему. Я пытаюсь сохранить это как PowerShell, насколько это возможно, но я прибегаю к использованию простых старых утилит.exe (особенно из-за недостатков в Add-WindowsDriver
). На самом деле, я стараюсь изо всех сил, чтобы избежать GUI.
Версия Powershell 5.1.
До сих пор я выполнил эти шаги, пытаясь установить принтер:
- Скопировал файлы.inf, .cat и.cab на сервер
- Добавлен порт принтера для принтера:
Add-PrinterPort -Name "TCP/IP_CanonIR" -PrinterHostAddress 10.0.0.60 -PortNumber 9100
- Добавлен драйвер принтера в Магазин драйверов 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