プリンター関連のコマンドまとめ

# 概要

Windows のコマンドラインからプリンター関連の操作を行うコマンドのまとめです。

## 1. プリンタードライバーをインストールするためのサービスの準備

`Print Spooler` サービスと `Device Install` サービスを自動起動するように構成して起動します。
これらのサービスが起動していないとプリンタードライバーのインストールが行えません。

```
PowerShell Set-Service Spooler -StartupType Automatic
PowerShell Start-Service Spooler
PowerShell Set-Service DeviceInstall -StartupType Automatic
PowerShell Start-Service DeviceInstall
```

Windows Server で Print Spooler サービスが利用できない場合は `プリントサーバー` 機能をインストールします。

```
PowerShell Install-WindowsFeature Print-Server
```

## 2. プリンタードライバーのインストール

INFファイルを使用してプリンタードライバーをインストールします。
指定するプリンタードライバー名はINFファイル内に記載されています。

```
pnputil /add-driver (INFファイルのパス) /install
PowerShell Add-PrinterDriver -Name 'プリンタードライバー名'
```

INFファイルを開くと、OSのアーキテクチャごとのセクションにプリンタードライバー名が記載されています。

```sample.inf
; sample.inf
;
; (C) Printer Driver Inc. 2019
; Printer Driver for Windows

...(略)...

[XXXXX.NTamd64]
"プリンタードライバー名"  = XXXXX,XXXXX
"プリンタードライバー名"  = XXXXX,XXXXX
"プリンタードライバー名"  = XXXXX,XXXXX

...(略)...
```

## 3. プリンターポートの追加 (必要に応じて)

任意のプリンターポートで印刷する場合はプリンターポートを追加します。

```
PowerShell Add-PrinterPort -Name 'プリンターポート名'
```

Windows の初期状態では以下のプリンターポートが既に追加されています。

```
>PowerShell Get-PrinterPort

Name                 ComputerName         Description          PortMonitor
----                 ------------         -----------          -----------
COM1:                                     ローカル ポート      Local Monitor
COM2:                                     ローカル ポート      Local Monitor
COM3:                                     ローカル ポート      Local Monitor
COM4:                                     ローカル ポート      Local Monitor
FILE:                                     ローカル ポート      Local Monitor
LPT1:                                     ローカル ポート      Local Monitor
LPT2:                                     ローカル ポート      Local Monitor
LPT3:                                     ローカル ポート      Local Monitor
PORTPROMPT:                               ローカル ポート      Local Monitor
SHRFAX:                                   FAX モニター ポート  Microsoft Shared ...
```

印刷データをファイルに直接出力する場合はプリンターポート名にファイルパスを指定します。

```
PowerShell Add-PrinterPort -Name 'C:\output.ps'
```

ダミーのプリンターなどを使用する場合など、印刷データを出力する必要がない場合は null ポートを指定します。

```
PowerShell Add-PrinterPort -Name 'NUL:'
```

## 4. プリンターの追加

プリンタードライバーとプリンターポートを関連付けてプリンターを追加します。

```
PowerShell Add-Printer -Name 'プリンター名' -DriverName 'プリンタードライバー名' -PortName 'LPT1:'
```

## 5. 通常使うプリンターに設定する

プリンターを通常使うプリンターとして設定します。

```
cscript C:\Windows\System32\Printing_Admin_Scripts\ja-JP\prnmngr.vbs -p "プリンター名" -t
```

## 6. 印刷テストを行う

プリンターにテストページの印刷データを送信します。

```
cscript C:\Windows\System32\Printing_Admin_Scripts\ja-JP\prnqctl.vbs -p "プリンター名" -e
```

## 7. プリンターを一時停止状態にする

プリンターを一時停止状態にして一時的に印刷データを処理しないようにします。

```
cscript C:\Windows\System32\Printing_Admin_Scripts\ja-JP\prnqctl.vbs -p "プリンター名" -z
```

一時停止状態を解除します。

```
cscript C:\Windows\System32\Printing_Admin_Scripts\ja-JP\prnqctl.vbs -p "プリンター名" -m
```

## 8. 印刷ジョブの一覧を確認する

すべてのプリンターの印刷ジョブの一覧を確認します。

```
cscript C:\Windows\System32\Printing_Admin_Scripts\ja-JP\prnjobs.vbs -l
```

指定したプリンターだけの印刷ジョブの一覧も確認できます。

```
cscript C:\Windows\System32\Printing_Admin_Scripts\ja-JP\prnjobs.vbs -p "プリンター名" -l
```