Поскольку значение доступно только для чтения, вы не сможете использовать WMI для его установки. .Net имеет System.Printing
имеет установку входного бина, которая не идеальна, но работает. Я сделал функцию вокруг этого в моем модуле PSPrintTools. Я думаю, что Tray1, Tray2 тоже работают как ценности, но я не помню с головы. Вне этого вы можете редактировать XML-файл PrintTicket. Вот соответствующий код только для этой функции:
$Printer = "Example Printer Name"
$InputBin = "AutoSelect","AutoSheetFeeder","Cassette","Manual","Tractor" #choose one
Add-Type -AssemblyName System.Printing
$Permissions = [System.Printing.PrintSystemDesiredAccess]::AdministrateServer
$QueuePerms = [System.Printing.PrintSystemDesiredAccess]::AdministratePrinter
$PrintServer = new-object System.Printing.LocalPrintServer -ArgumentList $Permissions
$NewQueue = New-Object System.Printing.PrintQueue -ArgumentList $PrintServer,$Printer,1,$QueuePerms
$InputBinCaps = $NewQueue.GetPrintCapabilities().InputBinCapability
if ($null -ne $InputBinCaps) {
if ($InputBinCaps.Contains([System.Printing.InputBin]::$InputBin)) {
$NewQueue.DefaultPrintTicket.InputBin = [System.Printing.InputBin]::$InputBin
$NewQueue.UserPrintTicket.InputBin = [System.Printing.InputBin]::$InputBin
} else {
Write-Error "$InputBin unavailable on $Printer"
}
}
$NewQueue.commit()
$NewQueue.dispose()
$PrintServer.commit()
$PrintServer.dispose()
Было бы полезно, если бы вы сообщили о любых полученных сообщениях об ошибках или явно заявили, что не получили сообщения об ошибке. В последнем случае было бы также полезно узнать, как вы определили, что «это не сработало». –
@JeffZeitlin Сообщения об ошибках здесь не будут полезны, так как Джессика заявила, что значение доступно только для чтения, что означает, что WMI, к сожалению, не будет работать. – BenH
@JeffZeitlin Ошибка была «Exception call« Put »с аргументом« 0 »:« Провайдер не способен к попытке операции », который я исследовал и привел к странице, которая сказала мне, что она доступна только для чтения. –