適材適所

PowerShellを中心にプログラミングやシステム管理の備忘録的なブログ

【PowerShell】プリンタの設定を変更する【Set-PrintConfiguration】

プリンタの両面印刷・片面印刷などの印刷設定を変更したいときはPowerShellが使えますのでその紹介です。

検証した環境

Windows10
Windows PowerShell 5.1

Get-PrintConfiguration コマンドレットで印刷設定を確認できる

PowerShellのコマンドレットにGet-PrintConfigurationというコマンドレットがあります。

Get-PrintConfiguration (PrintManagement) | Microsoft Learn

これはその名が示す通り、プリンタの印刷設定を確認することができるコマンドレットです。

確認できるのは以下の5つ。

  • Collate (部単位での印刷)
  • Color (カラー印刷)
  • Duplexing Mode (後述)
  • N-Up (何アップで印刷するか、例えば2アップなら紙1枚に2ページ分印刷する)
  • Paper Size (用紙サイズ)

Duplexing ModeはSystem.PrintingのDuplexing 列挙型(Duplexing 列挙型 (System.Printing) | Microsoft Learn)に準拠していると思われます。

OneSided(片面)、TwoSidedLongEdge(長辺綴じ)、TwoSidedShortEdge(短辺綴じ) の3つの値をとります。

簡単に使い方を見てみます。プリンタ名を指定して使う必要があります。

 
 Get-PrintConfiguration "プリンタ名"

これを実行すると・・・

#結果
PrinterName     ComputerName    Collate    Color      DuplexingMode
-----------     ------------    -------    -----      -------------
プリンタ名                        True       False      OneSided

と出力されます。あれ?N-UpとPaper Sizeは?なんと出てきません。全ての設定を確認するためにはFormat-Listコマンドレットに渡してあげるのが一番手っ取り早いかと思います。

 
 Get-PrintConfiguration "プリンタ名"|Format-List
#結果
PrinterName   : プリンタ名
ComputerName  :
Collate       : True
Color         : False
DuplexingMode : OneSided
PaperSize     : A4

なんでデフォルトで全部出してくれないの!というツッコミは無しで。

さらにGet-Printerという全てのプリンタを取得できるコマンドレットと組み合わせることでPCに設定されている全てのプリンタの印刷設定を確認することができます。

 
Get-Printer|Get-PrintConfiguration|Format-List

www.tekizai.net

Set-PrintConfigurationコマンドレットで印刷設定を変更できる

GetがあればSetがあるというのはPowerShell界の常識です。知らんけど。

印刷設定を変更したいときは、Set-PrintConfigurationというコマンドレットを使います。

プリンタ1というプリンタの設定を、部単位で印刷、カラー印刷、片面印刷、用紙サイズA4に設定するには次のようにします。

 
Set-PrintConfiguration -Collate -Color -DuplexingMode OneSided -PaperSize A4 -ComputerName "プリンタ1"

また、管理者の資格を持っていればリモートにあるPCの印刷設定を変更することも可能です。その場合は、ComputerName を指定します。

 
#リモートPC名というPCのプリンタ1をカラー印刷にする
Set-PrintConfiguration -ComputerName "リモートPC名" -PrinterName "プリンタ1" -Color

上述のGet-PrintConfiguration と同じようにGet-Printerコマンドレットと組み合わせることで印刷設定を一括で行うことができます。

#全てのプリンタをカラー印刷にする
Get-Printer |Set-PrintConfiguration -Color

一括ではなくプリンタ名から条件を絞る場合は次のようにGet-Printerで指定します。

 
#頭文字がAのプリンタをカラー印刷にする
Get-Printer "A*" |Set-PrintConfiguration -Color

リモートPCの印刷設定を一括で変更する場合は、Get-Printerで ComputerName を指定します。

 
#リモートPCの全てのプリンタをカラー印刷にする
Get-Printer -ComputerName "リモートPC" |Set-PrintConfiguration -Color

できない場合もある

私の環境でもありましたが、メーカーによっては Set-PrintConfiguration で変更できない印刷設定もあります。

私ができなかったのは、Canonの複合機で カラー印刷とモノクロ印刷の切替えをしようとしましたができませんでした。

こればかりはでたとこ勝負と諦めて試してみるしかないようです。

終わりに

PowerShellでプリンタの印刷設定を変更する方法についての紹介でした。

管理者の方が大量のPCの印刷設定を一括で変更するときや、リモートPCの印刷設定を確認したいときなど、恩恵に預かれるかと思います。

逆にユーザー側だと、GUIでしこしこ確認したり変更してしまった方が早いなんてことも。

それでも知っていれば何かの役に立つかもしれませんので書き記しておきます。

というわけでここまでお読み頂き、ありがとうございました。