PowerShellを使って既定のプリンターの変更と用紙設定の変更
PowerShellを使って印刷するスクリプトを書いた。
Start-Process \.printingfile.pdf -Verb Print
このスクリプトでは
- 規定のプリンタ
- 既定の用紙設定
で印刷し続けるだけ。
PowerShellで以下のことをやりたい
- 既定のプリンターの変更
- 既定の用紙設定の変更
- 用紙サイズ
- 印刷の向き
環境
- Windows10 Pro/Home
- PowerShell v5.1
既定のプリンターの変更
下記のコマンドを走らせれば一発。
$Printers=Get-WmiObject Win32_Printer
$Printer=$Printers | Where-Object Name -eq "Canon Generic Plus LIPSLX"
# Powershell v2.0
# $Printer=$Printers | Where-Object {$_.Name -eq "Canon Generic Plus LIPSLX"}
$Printer.SetDefaultPrinter()
Windows10の設定でプリンターとスキャナーを見てみましょう。
設定されました。
用紙サイズの変更
A4からB5に変更します。
$Printers=Get-WmiObject Win32_Printer
$Printer=$Printers | Where-Object Name -eq "Canon Generic Plus LIPSLX"
# 基本設定のPaperTypeを変更
$Printer.DefaultPaperType="B5"
# 更新
$Printer.Put()
プリンターのプロパティの基本設定を開いてみましょう。
原稿サイズがB5になっています。
用紙の向きの変更
# 標準設定の用紙設定をXML出力
$p=Get-PrintConfiguration -PrinterName "Canon Generic Plus LIPSLX"
$p.PrintTicketXML | Out-File psettings.xml -Encoding default
$ps=get-content .\psettings.xml
# 用紙の向き 縦(Portrait)から横 Landscapeに変更
$ps -replace 'Portrait','Landscape' | out-file ppsettngs.xml -Encoding default
# 変更した用紙設定をセット
Set-PrintConfiguration -PrinterName "Canon Generic Plus LIPSLX" -PrintTicketXml (Get-Content .\ppsettngs.xml -Raw)
実際に変更されているか確認してみます。
プリンタープロパティ > 詳細設定 > 標準の設定 を開いてみます。
印刷の向きが横になっています。
成功です。
原稿サイズがA4のままですが、基本設定の原稿サイズB5を優先して実行するので問題ありません。
用紙トレイの変更
用紙トレイを選択すると用紙サイズは無視されます。
一般的に下記のように設定されていることが多いです。
- Auto
- 自動
- Manual
- 手差し
- Upper
- トレイ1
- Middle
- トレイ2
- Bottom
- トレイ3
用紙の向きと同じように Set-printConfigurationを使って設定します。
# 標準設定の用紙設定をXML出力
$p=Get-PrintConfiguration -PrinterName "Canon Generic Plus LIPSLX"
$p.PrintTicketXML | Out-File psettings.xml -Encoding default
$ps=get-content .\psettings.xml
# トレイの変更
$ps -replace 'Auto','Manual' | out-file ppsettngs.xml -Encoding default
# 変更した用紙設定をセット
Set-PrintConfiguration -PrinterName "Canon Generic Plus LIPSLX" -PrintTicketXml (Get-Content .\ppsettngs.xml -Raw)
トレイがUser0000000261等の数値で指定されているプリンターもあります。
SHARP MXシリーズがそうでした。
もし動かなった場合、下記のようにPrintCapabilitiesXMLを出力して眺めてみて下さい。
$p=Get-PrintConfiguration -PrinterName "Canon Generic Plus LIPSLX"
$p.PrintCapabilitiesXML | out-file pc.xml
# Open
.\pc.xml
細かいお話
- Windowsのプリンターの設定は基本設定が優先。
- WMIObjectのWin32_Printerを使わないと基本設定の方の用紙設定が設定できない。
- Win32_Printerではトレイ、用紙の向き等は設定できない。
- Set-PrintConfigurationを使えばトレイ、用紙の向き(縦・横)の設定が可能
- PowerShell v2.0しか使えない方はWin32_PrinterConfigurationを使うと幸せになれるかもしれない
Author And Source
この問題について(PowerShellを使って既定のプリンターの変更と用紙設定の変更), 我々は、より多くの情報をここで見つけました https://qiita.com/arachan@github/items/438f4cd806d445aa8ce5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .