GUI を使わずにプリンター管理タスクを手早く実行する必要がある場合 (スクリプトを使用してネットワーク全体にプリンターを展開したり、ドライバーのインストールを自動化したりする場合)、これらのコマンドライン トリックを知っておくと役立ちます。 スクリプトを使用してプリンターを管理するのは、最初は少し難しい場合があります。特に、Windows には、裏で大変な作業を実行する組み込みのスクリプトとツールがいくつかあるためです。 しかし、正直に言って、一度コツをつかめば、[設定] メニューや [デバイス] メニュー内をクリックするよりも速く処理できるので、満足感があります。 さらに、SCCM でのスクリプト作成、ログオン スクリプト、さらにはリモート サーバー タスクにも最適です。 つまり、要点は次のとおりです。 Windows は、`C:\Windows\System32\Printing_Admin_Scripts\en-US` (または言語に応じてローカライズされたフォルダー) に VBS スクリプトのコレクションを提供しています。 これらのスクリプトを使用すると、GUI を開かずにドライバーのインストール、プリンターの追加または削除、ポートの作成、キューの管理、さらにはプリンターの共有を行うことができます。これは隠れた名ツールですが、実行するコマンドを知っていれば、プリンターの大量展開やトラブルシューティングが格段に簡単になります。Windowsの対応を待つよりも早い場合もあります。ちなみに、XPやWindows Server 2003などの古いシステムでは、スクリプトは`C:\WINDOWS\system32`に保存されており、コマンドもほぼ同じです。Windowsは当然ながら、必要以上に複雑にする必要があるためです。
Windowsのコマンドラインからプリンタ管理を修正する方法
コマンドラインからプリンタドライバをインストールする方法
新しいプリンターをセットアップする場合や、ドライバーを一括更新する場合など、ドライバーの新規インストールが必要になることがあります。これは、GUIによる手動インストールが現実的ではないエンタープライズ環境ではよくあることです。このコマンドは、`prndrvr.vbs` に `-a` スイッチ(ドライバーの追加を指示する)を指定します。例えば、次のようになります。
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prndrvr.vbs" -a -m "HP Universal Printing PCL 6" -i "C:\drv\HP Universal Print Driver\hpcu160u.inf"
コマンドを詳しく説明すると、-aは追加、-mはドライバー名(ユニバーサルプリンタードライバーなど、必要なドライバーと一致する必要があります)を指定し、-i はドライバー情報を含む INF ファイルを正確に指定します。これは、Windows にドライバーの場所と操作方法を正確に指示するという意味なので、ある程度は理にかなっています。ドライバーに互換性がなかったり破損していたりすると、セットアップによってはインストールが拒否されることがあります。しかし、再起動後にドライバーを再度実行したり、INF パスを更新したりするだけで問題が解決する場合もあります。通常、この後、プリント サーバーのプロパティ にドライバーが表示されます(コントロール パネル > デバイスとプリンター > プリント サーバーのプロパティ から移動)。
コマンドプロンプトから新しいプリンターを追加する
ドライバーのインストールが完了したら、プリンターの追加自体は非常に簡単です。コマンドは`prnmngr.vbs`を`-a`オプション付きで使用しますが、今回はプリンターを作成します。例:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" -a -p "HP5525" -m "HP Universal Printing PCL 6" -r "LPT1:"
これにより、「HP5525」という名前の新しいローカルプリンターがそのドライバーとともにインストールされ、ポート(例: )にリンクされますLPT1。このポートはUSBポート(USB001)またはシリアルポート(COM1:)に置き換えることができます。ポート名はマシン上のポート名と一致している必要があることに注意してください。使用できないポートを指定した場合、スクリプトは失敗するか、何も実行されません。これらのコマンドを実行する前に、デバイスとプリンターでポート番号を再確認することをお勧めします。
コマンドラインからデフォルトプリンタを設定する
Windowsが実際に使用したいプリンターを忘れてしまうと、問題が発生することがあります。以下のコマンドですべてのプリンターを一覧表示できます。
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" -l
現在のデフォルトを確認するには:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" -g
デフォルトを変更するには、次のコマンドを実行します。
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" -t -p "HP5525"
これにより、設定画面に入らずに通常使うプリンターを変更できます。Windowsの設定によっては、すぐに切り替わらない場合もあるため、変更を完全に有効にするには再起動またはログオフが必要になる場合があります。信じてください、私や数人のシステム管理者は、これを何度も経験しました。
ネットワークプリンター用のTCP/IPポートを作成する
ネットワークプリンターへの接続には、ポートの作成とプリンターの追加という2つの手順が必要です。まず、TCP/IPポートを設定する必要があります。例えば、プリンターのIPアドレスが192.168.1.22だとします。コマンドは以下のようになります。
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\Prnport.vbs" -a -r IP_192.168.1.22 -h 192.168.1.22 -o raw -n 9100
ここで、-rはポート名(任意の名前を付けることができます)、-hはIPアドレス、-o rawはプロトコル(rawソケット)の設定、-n 9100は通常の標準ポートです。ポートを作成したら、次のコマンドでプリンターを追加できます。
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" -a -p "HP5525" -m "HP Universal Printing PCL 6" -r "IP_192.168.1.22"
これにより、そのIPアドレスを指すネットワークプリンターが自動的に追加され、システムで使用できるようになります。IPアドレスまたはポート番号の設定が間違っていると、スクリプトがハングしたりエラーが発生したりすることがあるので、IPアドレスとポート番号を再度確認してください。
コマンドラインからテストページを印刷する
すべてが正常に動作していることを確認したいですか?以下のスクリプトは、指定したプリンターでテスト印刷を実行します。
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnqctl.vbs” -e -p "HP5525"
ちょっと変な感じですが、大抵はうまくいきます。プリンターのプロパティを開く必要はなく、設定に問題がないことを確認するための診断ページが印刷されるだけです。ネットワークプリンターやカスタム設定など、設定によってはすぐには動作しないこともありますが、とりあえずはこれで良いでしょう。
印刷キューの管理 – ジョブの表示、クリア、キャンセル
印刷ジョブが滞っている場合や、ちょっと確認したいだけの場合は、スクリプトでキューを表示したりクリアしたりするコマンドが用意されています。すべてのローカルプリンタのすべての印刷ジョブを一覧表示するには、次のコマンドを実行します。
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnjobs.vbs" -l
特定のプリンタのジョブを表示するには:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnjobs.vbs" -l -p "HP5525"
印刷キューをクリアするにはどうすればいいでしょうか?このコマンドでクリアできますが、キュー内のすべてのジョブが削除されるので注意してください。
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnjobs.vbs" -x -p "HP5525"
すべてのプリンタのすべてのキューをクリアするためのブルートフォースアプローチの場合:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnjobs.vbs" -x
注意: プリンタの保留中のジョブが長すぎる場合や、アクセス許可が適切でない場合は、これらのスクリプトが機能しないことがあります。ただし、通常は機能します。
コマンドライン経由でネットワーク経由でプリンターを共有する
プリンタの共有はコマンドラインからも行えます。既存のプリンタを任意の名前で共有するには、次のコマンドを実行します。
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prncnfg.vbs" -t -p "HP5525" -h "HP5525_Shared" +shared
共有をオフにするには:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prncnfg.vbs" -t -p "HP5525" -shared
Active Directory でプリンターを公開する場合は、+published フラグを追加します。
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prncnfg.vbs" -t -p "HP5525" +published
基本的に、共有と公開をスクリプト化して、ネットワーク全体の展開を自動化できます。
コマンドラインからネットワークプリンターを追加する
\\rome-prnt01\hp2100 などの別のマシン上の共有プリンタに接続するには、次のコマンドを実行します。
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" -ac -p "\\rome-prnt01\hp2100"
共有名が間違っている場合やネットワークに問題がある場合、一般的なエラー(0x00000002、0x00000057、0x0000007e)が表示されるので注意してください。通常、共有パスと権限を再確認することで解決できます。
コマンドラインからプリンターとドライバーを削除する
プリンターが故障した場合、または単に整理したい場合は、まずインストールされているすべてのプリンターを一覧表示することができます。
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" -l
特定のプリンターを削除するには、次のコマンドを実行します。
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" -d -p "HP5525"
ドライバー自体を削除するには、次のコマンドを実行します。
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prndrvr.vbs" -d -m "HP Universal Printing PCL 6" -e "Windows x64" -v 3
これは、ドライバーを交換したり、古いドライバーをクリーンアップしたりする場合に役立ちます。一部のマシンでは、ドライバーを削除してもファイルが残ってしまう場合がありますが、ほとんどの場合、これで期待通りの結果が得られます。
まとめ
要点は以上です。これらのスクリプトは、箱の中に入っているツールの中で最も見栄えが良いわけではありませんが、プリンターのセットアップ、トラブルシューティング、一括展開の自動化、特にGUIが使えない場合に非常に役立ちます。重要なのは、これらのスクリプトは構文とパラメータに敏感なので、少し試行錯誤してみるとうまくいく場合があるということです。それでも、一度使いこなせるようになってしまえば、メニューを操作しなくても、シンプルなコマンドで複数のプリンターを管理できるのは、かなり満足感があります。
まとめ
- `
prndrvr.vbs` を使用してドライバーをインストールします prnmngr.vbs` `でプリンタを追加しますPrnport.vbs` `を使用して TCP/IP ポートを作成しますprnjobs.vbs` `を使用してキューとジョブを管理するprncnfg.vbs` ` と `を介してネットワークプリンタを共有および接続しますprnmngr.vbs- 必要に応じてプリンターとドライバーを削除する
最後に
これらのコマンドのほとんどは少し古めかしいですが、ちゃんと機能します。環境によっては、これらしか選択肢がないこともあります。ぜひいろいろ試してみて、ご自身の環境に合わせてコマンドを微調整したり組み合わせたりしてみてください。これで少しでも手間が省けると良いのですが。私の場合はうまくいきましたので、誰かの時間の節約にもなるといいですね。