値は読み取り専用なので、WMIを使用して値を設定することはできません。 .NetにはSystem.Printing
に入力ビンの設定がありますが、これは完璧ではありませんが動作します。私はPSPrintToolsモジュールでこの問題を回避しました。 Tray1、Tray2も値として機能すると思いますが、私は頭の上から覚えていません。これ以外では、PrintTicket XMLの編集が始まります。
$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 Jessicaは値が読み取り専用であるため、残念ながらWMIは動作しないという意味で、ここでのエラーメッセージは有用ではありません。 – BenH
@JeffZeitlinエラーは、 "Put"を "0"引数で呼び出す例外でした。 "プロバイダは操作を試みることができませんでした。" "私は調査し、読み込み専用だと言ったページに進みました。 –