无法在 2012 R2 打印服务器上使用 Add-PrinterDriver 添加打印机驱动程序

无法在 2012 R2 打印服务器上使用 Add-PrinterDriver 添加打印机驱动程序

我正在尝试将 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。我通过谷歌搜索了解到,我首先需要将驱动程序添加到 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.

对我来说,这听起来像是我可以随意命名它,所以我看不出有什么问题。这里所做的一切都是在提升的 shell 中运行的,因此访问驱动程序存储的内容应该不是问题。

有人能给点建议吗?我是不是做错了?如果我可以提供任何其他相关信息,请告诉我。

答案1

好吧,我明白了。使用参数,-Name您需要根据 .inf 文件中的可用名称为该驱动程序指定一个有效名称。这是在安装打印机时手动选择驱动程序时显示的名称。因此,例如,如果您想为佳能打印机添加打印机驱动程序:

# 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

相关内容