ЦЕЛЬ: установить драйверы 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 и / или Перенаправитель реестра играют роль в поведении.