Windows Serverにプリンタを50機種・100台程度インストールすることになり、手作業ではやってられん。ということで、PowerShellでスクリプトを書いて自動化することにしました。
開発環境
- Windows 10
- Visual Studio Code + PowerShell Language Support for Visual Studio Code
実行環境
- Windows Server 2012R2
注意
使用したコマンドレットはWindows 8/2012以降でないと使えないので注意が必要です。詳細はこちら。
手順
以下の手順で作業をおこないます。
- プリンタドライバの入手と解凍
- INFファイルのインストール
- プリンタドライバのインストール
- プリンタポートの作成
- プリンタの作成
- プリンタ固有の設定
プリンタドライバの入手と解凍
インストールするプリンタのドライバをメーカーのサイトなどから入手します。今回はWindows Server 2012R2用のものを取得しました。
取得したドライバはzipファイルや自己解凍形式の圧縮ファイルになっているので、適当なディレクトリ(例えば、C:\work)に解凍しておきます。
INFファイルのインストール
プリンタドライバを解凍したディレクトリにINFファイルがあるので、まずはそれをインストールします。
pnputil -a "C:\work\driver\FX DocuCentre-V C5575\fx5c7775T2plw170710wxp6fja\cswnd\ART_EX\amd64\001\FXLSOJL.INF"
-aオプションにINFファイルの絶対パスを指定します。
プリンタドライバのインストール
1つ前のステップでインストールしたINIファイルを開いて、インストールするプリンタドライバ名を確認します。
(略)
[FXIDPF.NTamd64]
"FX DocuCentre-V C2275" = DC_C2275_PLW,USBPRINT\FUJI_XEROXDocuCentre3443
"FX DocuCentre-V C2275" = DC_C2275_PLW,LPTENUM\FUJI_XEROXDocuCentre3443
"FX DocuCentre-V C2275" = DC_C2275_PLW,WSDPRINT\FUJI_XEROXDocuCentre3443
"FX DocuCentre-V C3375" = DC_C3375_PLW,USBPRINT\FUJI_XEROXDocuCentre0813
"FX DocuCentre-V C3375" = DC_C3375_PLW,LPTENUM\FUJI_XEROXDocuCentre0813
"FX DocuCentre-V C3375" = DC_C3375_PLW,WSDPRINT\FUJI_XEROXDocuCentre0813
"FX DocuCentre-V C4475" = DC_C4475_PLW,USBPRINT\FUJI_XEROXDocuCentreBDA3
"FX DocuCentre-V C4475" = DC_C4475_PLW,LPTENUM\FUJI_XEROXDocuCentreBDA3
"FX DocuCentre-V C4475" = DC_C4475_PLW,WSDPRINT\FUJI_XEROXDocuCentreBDA3
"FX DocuCentre-V C5575" = DC_C5575_PLW,USBPRINT\FUJI_XEROXDocuCentre83F3
"FX DocuCentre-V C5575" = DC_C5575_PLW,LPTENUM\FUJI_XEROXDocuCentre83F3
"FX DocuCentre-V C5575" = DC_C5575_PLW,WSDPRINT\FUJI_XEROXDocuCentre83F3
(略)
INIファイルを開いて上のような箇所を探します。今回は、C5575をインストールするので、"FX DocuCentre-V C5575"をメモしておきます。これがプリンタドライバ名となります。大文字・小文字、空白も区別するので注意してください。
Add-PrinterDriver
コマンドレットを使って、プリンタドライバをインストールします。
Add-PrinterDriver -Name "FX DocuCentre-V C5575"
-Nameオプションでインストールするプリンタドライバ名を指定します。INFファイルの場所もオプションで指定できるようです。
Add-PrinterDriver
コマンドレットの詳細については、こちらを参照してください。
プリンタポートの作成
今回は、TCP/IPプリンタポートを作成します。Add-PrinterPort
コマンドレットを使用します。プロトコルは"RAW"で作成しています。最近のプリンタは大抵"RAW"でいけます。
Add-PrinterPort -Name "192.168.14.1" -PrinterHostAddress "192.168.14.1" -PortNumber 9100
使用したオプションの意味は以下のとおりです。
オプション名 | 設定内容 |
---|---|
Name | プリンタポートの名前。今回はIPアドレスと同じにしました。 |
PrinterHostAddress | プリンタのIPアドレス。このオプションを使うと、TCP/IPポートを作成します。 |
PortNumber | 最近のレーザープリンタの場合は9100でよい。不安な時はマニュアル等で確認してください。 |
ラインプリンタの場合は少しオプションが異なります。RAWではなく、LPRプロトコルとなるからです。
Add-PrinterPort -Name "192.168.14.4" -LprHostAddress "192.168.14.4" -LprQueueName "LP1" -LprByteCounting
オプション名 | 設定内容 |
---|---|
Name | プリンタポート名。IPアドレスと同じにしました。 |
LprHostAddress | プリンタのIPアドレス。LPRプロトコルのTCP/IPポートを作成する場合は、こちらのオプションを使います。 |
LprQueueName | プリンタのキュー名を設定します。InfoPrint系は"LP1"のようです。サポートサイト等で確認できます。 |
LprByteCounting | LPRバイトカウントを有効にするかどうか。オプションを付けると有効になります。 |
Add-PrinterPort
コマンドレットの詳細は、こちらを参照してください。
プリンタの作成
いよいよ最後です。Add-Printer
コマンドレットを使用して、プリンタを作成します。
Add-Printer -DriverName "FX DocuCentre-V C5575" -Name "FX DocuCentre-V C5575(test)" -PortName "192.168.14.2" -Comment "俺のプリンタ" -Location "俺の部屋"
オプション名 | 設定内容 |
---|---|
DriverName | 使用するプリンタドライバ名。 |
Name | プリンタ名。「デバイスとプリンター」に表示される名前となります。 |
PortName | 使用するプリンタポートの名前。 |
Comment | コメント。プリンタのプロパティで「コメント」欄に表示されます。 |
Location | 場所。プリンタのプロパティで「場所」欄に表示されます。 |
Add-Printer
コマンドレットの詳細は、こちらを参照してください。
プリンタ固有の設定
プリンタ固有の設定がある場合は、コントロールパネル経由で個別に設定します。もしかしたら、こちらもPowerShellでいじれるのかもしれませんが未確認です。
ps1ファイルでまとめて実行
複数機種・複数台インストールする場合は、"INFファイルのインストール"から"プリンタの作成"までをps1ファイルに記述して、一括実行します。
ただ、PowerShellでps1ファイルを実行しようとすると実行できないエラーが発生します。実行ポリシーのデフォルトが"Restricted"(いかなるスクリプトも実行できない)になっているようです。(OSによってデフォルトが異なるという噂も)
わたしはこちらの記事を参考にして実行しました。