2017-01-20 190 views
0

WMIオブジェクトを使用して、powershellの用紙トレイ設定を変更しようとしました。しかし、私はちょうど私が変更しようとしている価値は、読んで実用的に読んでいることを学んだ。 PowerShellやVBScriptでタスクを達成するのに助けてくれますか?プリンタトレイの設定をpowershellで変更します

$printers = Get-WMIObject -Class Win32_PrinterConfiguration | Where-Object {$_.Name -EQ "CHK.Checks"} 
$printers.MediaType = 270 
$printers.Put() 

私はこれを試みても機能しませんでした。

助けてください!

ありがとうございます!

+0

受信したエラーメッセージを報告したか、エラーメッセージが表示されなかったと明示的に述べられている場合は役立ちます。後者の場合、「それはうまくいかない」とあなたがどのように判断したのかを知ることも有益でしょう。 –

+0

@JeffZeitlin Jessicaは値が読み取り専用であるため、残念ながらWMIは動作しないという意味で、ここでのエラーメッセージは有用ではありません。 – BenH

+0

@JeffZeitlinエラーは、 "Put"を "0"引数で呼び出す例外でした。 "プロバイダは操作を試みることができませんでした。" "私は調査し、読み込み専用だと言ったページに進みました。 –

答えて

1

値は読み取り専用なので、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() 
+0

私はあなたのスクリプトを実行しました。 if文の最後に "}"を付ける必要がありましたが、トレイの設定にはうまくいきました!しかし、私が実際に変更する必要があるのは、「用紙の種類」です。これは、「プリンタの設定を使用する」とは対照的に、その値をプレプリントに設定する必要があります。 –

+0

{それは私がカットアンドペーストから得たものです。ページ・サイズがより良いです、それはプロパティ 'PageMediaType'です。 GitHubモジュールには、 'Set-PSPTPrintConfiguration'関数のパラメータとしても、' InputBin'ではなく 'PageMediaType'になるように私のコードを変更することができます。 – BenH

+0

本当に助けてくれてありがとう。しかし、 "GetPrintCapabilities()。PageMediaTypeCapability" @BenHに値が設定されている場合にのみ機能します。事前印刷はそのフィールドのオプションではありません。私はそれを結合に変更しようとすると、それは完璧に動作します。しかし、preprintedは "Contains"と引数count: "1"のオーバーロードを見つけることができません。 " –

関連する問題