Назад | Перейти на главную страницу

Добавление 32-разрядных драйверов принтера на 64-разрядный сервер Windows программным способом

ЦЕЛЬ: установить драйверы x64 и x32 для принтеров на сервере печати Windows 2012 R2 автоматически.

ИНФОРМАЦИЯ: мне удалось установить драйверы печати x64 без проблем. Моя попытка установить x32 на существующие принтеры ниже:

# - Set the driver name
$driverName = "HP Universal Printing PCL 6"

# - Get a list of printers that already have x64 drivers installed
$printers = get-Printer | where {$_.drivername -eq $driverName}

Foreach ($printer in $printers) {
    # - This is the only way I could think to get the x32 print driver. It is already installed on the system with pnputil
    $driver32 = get-printerdriver | where {$_.name -eq $driverName -and $_.printerenvironment -eq "Windows NT x86"}

    # -- Turn off the share so we can add the driver.
    $sharename = get-printer -name $printer | select -expand ShareName
    set-printer -name $printer -Shared $false -confirm:$false

    # -- This does not work. The set-printer cmdlet does not accept pipeline input.
    $driver32 | set-printer -name $printer -confirm:$false

    # -- Re-share the printer.
    set-printer -name $printer -Shared $true -Sharename $sharename
}

ПРОБЛЕМА: Поскольку Set-Printer не принимает ввод конвейера, я не могу придумать другого способа сообщить ему, какой драйвер установить. Имена драйверов x32 и x64 идентичны, поэтому я не знаю, как их различать с помощью параметра -DriverName.

Это отговорка, ответ-заполнитель. Я хотел бы проследить, когда я смогу провести некоторое тестирование на компьютере с Windows, чтобы проверить [in] точность следующего.


Запустите рабочий сценарий PS1 «x64» из 32-разрядной командной строки Powershell.

С точки зрения 32-битного приложения C:\Windows\system32 действительно было бы C:\Windows\SysWOW64. Видеть Перенаправитель файловой системы. Я подозреваю, что File System Redirector и / или Перенаправитель реестра играют роль в поведении.