印刷出来るときと出来ない時があるのはなぜ?
状況としては次の通りです。
- Windowsのネットワークプリンターのドライバは正常にインストール
- この時、テスト印刷も正常に出力される事を確認
- 日中、印刷を実行すると印刷キューには入るが印刷されない
- 印刷キューに入った状態でWindowsを再起動すると、再起動直後に印刷が実行される
気になるのは、Zcalerが入っている事。
ここが何か悪さをしているのか。対応方法はあるのか。
プリンターに対して通信しているのか確認
AIを利用して確認してみました。
まずはプリンターとの通信ポートの確認
> Get-Printer -Name 'プリンター名' | Format-List Name,PortName,DriverName,PrinterStatus,WorkOffline
Name : FF Multi-model Print Driver
PortName : xxxxxxxxxxxxx.co.jp_1
DriverName : FF Multi-model Print Driver
PrinterStatus : Offline
> Get-PrinterPort | Format-Table Name,PrinterHostAddress,PortNumber,Protocol
Name PrinterHostAddress PortNumber Protocol
---- ------------------ ---------- --------
FILE:
PORTPROMPT:
xxxxxxxxxxxxx.co.jp_1 xxxxxxxxxxxxx.co.jp 515 LPR
ポート515は開いているのかの確認
> Test-NetConnection xxxxxxxxxxxxx.co.jp -Port 515
ComputerName : xxxxxxxxxxxxx.co.jp
RemoteAddress : x.x.x.x
RemotePort : 515
InterfaceAlias : イーサネット
SourceAddress : xx.xx.xx.xx
TcpTestSucceeded : True
パケットのキャプチャを取得 (下記を実行してから、印刷を実行)
pktmon stop
pktmon filter remove
pktmon reset
pktmon filter add -i <プリンターのIPv4アドレス> -p 515
pktmon start --capture --comp all --type all --pkt-size 128 --file-name "$env:USERPROFILE\Desktop\PktMon-LPR.etl"
パケットキャプチャの変換
pktmon counters
pktmon stop
pktmon etl2txt "$env:USERPROFILE\Desktop\PktMon-LPR.etl" --out "$env:USERPROFILE\Desktop\PktMon-LPR.txt" --verbose 3
その結果、印刷を実行してもプリンタには通信していない事が判明。
ヒントは
PrinterStatus : Offline
つまり、Windows側として何らかの理由でプリンターがオフラインであると認識しているので、そもそも印刷が要求されてもキューに入れるだけで実行しない。
なるほど。
問題は、なぜオフラインと認識してしまうのか…ですが、ちょっと時間も無かったので無理矢理対策します。
オフラインにしない為の対策 (場当たり的)
プリンターのプロパティ - ポート - ポートの構成 - SNMPステータスを有効にする のチェックを外す
この設定により、Windows側が事前にオフラインであるかを確認しなくなるので、印刷を要求した時に通信を実行し、プリンターに接続出来るのであれば印刷を実行するようになります。
もしかすると、SNMPステータスが正しく更新されないのはZscalerが影響しているかも…