PowerShellを用いてプリンタのデフォルト設定を効率よく変更する方法

PowerShellを用いてプリンタのデフォルト設定を効率よく変更する方法という問いには、現在のDefault=Trueを保存し、Name完全一致で一台を取得してInvoke-CimMethodからSetDefaultPrinterを呼ぶという方法で答えます。Win32_Printer.SetDefaultPrinterは指定プリンターを既定へ設定し、戻り値0が成功を示す。Windowsの『既定のプリンターをWindowsで管理する』設定が再変更する場合がある。この記事ではWin32_PrinterのName、DeviceID、DriverName、PortNameとDefaultを一台へ対応させるを判断軸にし、実行前の確認、記事固有のコード、合否判定、戻し方を一続きで示します。

プリンター追加やポート変更ではなく、既に導入済みの一台を既定へ選ぶ。完了は「メソッド戻り値が0で、再取得した同じプリンターだけがDefault=Trueとなり、テスト印刷先が一致する」と定義します。対象が取れない場合は「候補が0件ならプリンター未導入、ユーザー範囲、名前違いを確認し、複数件ならPortNameまで見て選び直す」として切り分け、推測で成功扱いにしません。

目次

Windowsによる既定管理を確認

現在のDefault=Trueを保存し、Name完全一致で一台を取得してInvoke-CimMethodからSetDefaultPrinterを呼ぶ。既定プリンターの確認と変更ではこの進め方により、操作したという事実ではなく、期待する状態へ到達したかでタイトルの問いへ答えられます。プリンター追加やポート変更ではなく、既に導入済みの一台を既定へ選ぶ。

Windowsによる既定管理を確認の合格条件は、メソッド戻り値が0で、再取得した同じプリンターだけがDefault=Trueとなり、テスト印刷先が一致することです。作業時刻、実行ユーザー、端末名を添え、判断に使った値が後から追える形にします。

現在のDefaultプリンターを取得

現在のDefaultプリンターを取得は変更前の基準点です。Win32_PrinterのName、DeviceID、DriverName、PortNameとDefaultを一台へ対応させるを出力に含め、取得時刻と一緒に保存します。値だけを切り取ると別対象との比較になるため、識別列を省きません。

$currentDefault = Get-CimInstance Win32_Printer |
  Where-Object { $_.Default } |
  Select-Object Name, DeviceID, DriverName, PortName, Default
$currentDefault
Get-Printer | Select-Object Name, DriverName, PortName, PrinterStatus

Win32_Printer.SetDefaultPrinterは指定プリンターを既定へ設定し、戻り値0が成功を示す。Windowsの『既定のプリンターをWindowsで管理する』設定が再変更する場合がある。出力が多い場合も最初から無理に一件へ絞らず、候補数と除外理由を残してから対象を決めます。

候補をName完全一致で選ぶ

候補をName完全一致で選ぶでは、現在のDefault=Trueを保存し、Name完全一致で一台を取得してInvoke-CimMethodからSetDefaultPrinterを呼ぶ。既定プリンターの確認と変更の例中にある名前、パス、ID、時刻はサンプルなので、そのまま本番へ貼らず、直前の読み取り結果から承認値を入れます。

$printerName = 'Microsoft Print to PDF'
$candidates = @(Get-CimInstance Win32_Printer -Filter "Name='$printerName'")
if ($candidates.Count -ne 1) { throw '変更先プリンターを一意に特定できません。' }
$result = Invoke-CimMethod -InputObject $candidates[0] -MethodName SetDefaultPrinter
if ($result.ReturnValue -ne 0) { throw "SetDefaultPrinter failed: $($result.ReturnValue)" }

部分一致の先頭やオフライン機を既定にしない。業務印刷中の利用者へ知らせず変更しない。既定プリンターの確認と変更でプレビュー対応コマンドを使える場合はWhatIfを先に実行し、非対応の操作は対象一覧と引数を画面へ出して人が承認してから一度だけ実行します。

SetDefaultPrinterメソッドを一回呼ぶ

SetDefaultPrinterメソッドを一回呼ぶでは同じ対象を別経路でもう一度読みます。判定したいのは「コマンドが終了したか」ではなく、メソッド戻り値が0で、再取得した同じプリンターだけがDefault=Trueとなり、テスト印刷先が一致するかどうかです。

Get-CimInstance Win32_Printer |
  Where-Object { $_.Default } |
  Select-Object Name, DeviceID, DriverName, PortName, Default

候補が0件ならプリンター未導入、ユーザー範囲、名前違いを確認し、複数件ならPortNameまで見て選び直す。既定プリンターの確認と変更の期待値と実測値が一致しないときは追加変更を重ねず、対象識別、権限、ポリシー、時間差の順で原因を分けます。

戻り値0とDefault=Trueを照合

部分一致の先頭やオフライン機を既定にしない。業務印刷中の利用者へ知らせず変更しない。戻り値0とDefault=Trueを照合に該当したら、警告を消して継続するのではなく、どの条件で止まったかを記録します。

候補が0件ならプリンター未導入、ユーザー範囲、名前違いを確認し、複数件ならPortNameまで見て選び直す。既定プリンターの確認と変更ではエラー本文、FullyQualifiedErrorId、対象ID、直前に成功した段階を残すと、別担当者が安全な地点から調査できます。

候補0件・複数件では中止

保存した旧Defaultプリンターへ同じSetDefaultPrinterメソッドを実行し、Default=Trueを再確認する。復旧操作にも同じ識別条件を使い、名前が似た別対象へ戻し処理を適用しません。

  • 既定プリンターの確認と変更の変更前値と取得時刻
  • 復旧対象: Win32_PrinterのName、DeviceID、DriverName、PortNameとDefaultを一台へ対応させる
  • 復旧後の判定: メソッド戻り値が0で、再取得した同じプリンターだけがDefault=Trueとなり、テスト印刷先が一致する
  • 再実行を止める条件: 部分一致の先頭やオフライン機を既定にしない。業務印刷中の利用者へ知らせず変更しない

以前の既定機へ戻す

VDIやプリンターリダイレクトではセッションごとに候補が変わるため、実行ユーザーとセッションを記録する。既定プリンターの確認と変更を繰り返す場合は、正常、対象なし、要承認、失敗を異なる終了状態として記録し、前回値との比較だけで異常を決めません。

以前の既定機へ戻すの識別軸Win32_PrinterのName、DeviceID、DriverName、PortNameとDefaultを一台へ対応させる
採用する実測メソッド戻り値が0で、再取得した同じプリンターだけがDefault=Trueとなり、テスト印刷先が一致する
0件時の扱い候補が0件ならプリンター未導入、ユーザー範囲、名前違いを確認し、複数件ならPortNameまで見て選び直す
保留にする兆候部分一致の先頭やオフライン機を既定にしない。業務印刷中の利用者へ知らせず変更しない

質問:Get-Printerだけで変更できるか

Q. 既定プリンターの確認と変更は管理者PowerShellなら必ず成功しますか。A. いいえ。Win32_Printer.SetDefaultPrinterは指定プリンターを既定へ設定し、戻り値0が成功を示す。Windowsの『既定のプリンターをWindowsで管理する』設定が再変更する場合がある。管理者権限は対象や製品仕様の不一致を解消しません。

Q. 0件を正常終了にできますか。A. 候補が0件ならプリンター未導入、ユーザー範囲、名前違いを確認し、複数件ならPortNameまで見て選び直す。要件上0件が許される場合だけ正常とし、検出できなかった状態とは分けて報告します。

既定プリンターの確認と変更の実行記録には、開始前の対象候補、採用した識別値、実行したコード、終了後の実測、除外した候補と理由を同じ作業番号で残します。特に「Win32_PrinterのName、DeviceID、DriverName、PortNameとDefaultを一台へ対応させる」を省くと、後日の再確認で別対象の値を比較するおそれがあります。画面コピーだけでなく、日時と端末名を含む構造化した出力も保存します。

PowerShellを用いてプリンタのデフォルト設定を効率よく変更する方法を定期手順へ組み込む場合も、初回は対話的に候補を確認します。正常時は「メソッド戻り値が0で、再取得した同じプリンターだけがDefault=Trueとなり、テスト印刷先が一致する」、判定不能時は「候補が0件ならプリンター未導入、ユーザー範囲、名前違いを確認し、複数件ならPortNameまで見て選び直す」、中止時は「部分一致の先頭やオフライン機を既定にしない。業務印刷中の利用者へ知らせず変更しない」をそれぞれ別の結果として扱います。これにより、0件や例外を都合よく成功へ丸めず、次の担当者が同じ対象と条件で追試できます。

公式情報・参考資料

既定プリンターの確認と変更で使うコマンド名、引数、対応環境は次のMicrosoft一次資料で確認しました。記事の確認日は2026年7月17日です。OSやモジュール更新後は、実行端末のGet-Helpと併せて再確認してください。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次