PowerShellはプリンターを扱う際に救世主となることがあります。特に、延々と続くメニューをクリックしたり、不安定なドライバーに悩まされている方にはなおさらです。しかし、正直なところ、すべてを自動化したり、そもそも何がうまく機能しているのかを把握したりすることが必ずしも簡単ではないというのは、少し奇妙です。プリンターは、ドライバーの問題、共有設定、ポートの混乱など、厄介な問題になりがちです。そこで、このガイドでは、PowerShellから直接プリンターを修復、インストール、管理するための便利なコマンドとコツをいくつか紹介します。使いこなせれば、かなりの時間を節約できます。
Windows で PowerShell を使用してプリンターを修正または管理する方法
DriverStore にプリンタードライバーを追加する
プリンターを追加しようとしたときに「ドライバーが見つかりません」というエラーが出るのをご存知ですか?これは通常、ドライバーがWindowsのドライバーストアにまだ存在しないことが原因です。多くの場合、まず正しいドライバーを手動で追加する必要があります。このコマンドレットは、既にドライバーストアに存在するドライバーのみを処理します。つまり、通常はまず、 pnputil.exeAdd-PrinterDriverを使用してINFファイルを手動でストアに追加する必要があります。
これを行うには、プリンターの Web サイトからドライバー ファイルをダウンロードし、 などのフォルダーに解凍してC:\drivers\KYOCERA\...、PowerShell で次のコマンドを実行します (管理者として実行)。
pnputil.exe -i -a "C:\drivers\KYOCERA\KyoClassicUniversalPCL6\OEMsetup.inf"
このちょっと奇妙な手順で、ドライバーがWindowsドライバーストアに追加されます。その後、PowerShellで以下のコマンドを実行して、インストールされているすべてのドライバーを一覧表示できます。
Get-PrinterDriver
新しいドライバーをプリント サーバーのドライバー リストに追加する場合は、次のようにします。
Add-PrinterDriver -Name "Kyocera Classic Universaldriver PCL6"
*INFファイルから*正確なドライバー名をコピーしてください*。これは非常に重要です。名前が一致しないと、新しいプリンターが正しく表示されない可能性があります。設定によっては、この手順が複雑になったり、場合によっては非常に手間がかかることがあります。これは、WindowsがINFファイルを正規のものとして認識しているかどうか、またはドライバーが署名されているかどうかによって異なります。
PowerShellでプリンターをインストールする方法
新しいプリンターのセットアップは、ただ接続するだけでは十分ではありません。特にネットワーク接続の場合は、まずポートを作成する必要があります。ローカルプリンターの場合は通常、USBまたはLPTを選択するだけで問題ありませんが、ネットワークプリンターの場合はIPポートの設定が必要になることがよくあります。一般的な設定方法は次のとおりです。
Add-PrinterPort -Name "IP_192.168.10.26" -PrinterHostAddress "192.168.10.26"
IPアドレスをプリンターの実際のアドレスに置き換えてください。Windowsはポートを必ずしも自動的に作成するわけではないので、手動で作成しなければならない場合もあります。ポートの準備ができたら、プリンター自体を追加するだけです。
Add-Printer -Name "Ricoh IM 2702" -DriverName "Kyocera Classic Universaldriver PCL6" -PortName "IP_192.168.10.26"
これを実行すると、プリンターの一覧に表示されるはずです。すぐに表示されない場合は、デバイスマネージャーまたはデバイスとプリンターパネルを確認してください。Windowsの動作を安定させる必要があるため、再起動やリフレッシュが必要になる場合があります。必要に応じてプリンターの名前を変更することもできます。
Rename-Printer -Name "Ricoh IM 2702" -NewName "Ricoh_2702"
ここで、そのプリンターをネットワーク経由で共有したい場合は、次のコマンドを実行します。
Set-Printer -Name "Ricoh_2702" -Shared $True -ShareName "Ricoh_2702"
共有を再度無効にするには、$Trueを に置き換えます$False。コマンドがわかれば簡単です。
サーバー上のプリンターの一覧表示と管理
複数のプリンターを管理している場合、または何が利用できるかを確認したい場合は、次のものを入手してください。
Get-Printer
すべてのプリンターのステータス、ドライバー情報、共有の有無、使用ポートなどを表示します。リモートサーバーを確認したいですか?問題ありません。
Get-Printer -ComputerName "your-server-name" | Format-List Name, DriverName
これは、特定のマシンの設定に関するトラブルシューティングや監査に役立ちます。また、共有プリンタを特定したい場合は、以下の手順に従ってください。
Get-Printer | Where-Object Shared -eq $true | Select-Object Name
ネットワーク共有プリンタの接続または削除
サーバーから自分のマシンに共有プリンターを接続するには、次のコマンドを実行します。
Add-Printer -ConnectionName "\\ServerName\SharedPrinter"
すでに接続されているものを確認したい場合は、次の手順に従ってください。
Get-Printer | Where-Object {$_. Type -eq 'Connection'}
何かが壊れた場合、または単にクリーンアップしたい場合は、その接続を削除できます。
Remove-Printer -Name "\\ServerName\SharedPrinter"
または、マップされたすべてのネットワーク プリンターを消去するには (時々煩わしいため)、次のようにします。
Get-Printer | Where-Object {$_. Type -eq 'Connection'} | Remove-Printer
面倒な設定なしでデフォルトのプリンターを設定する
ここが厄介なところです。Windowsは他のアプリから印刷すると、デフォルト設定を上書きしてしまう傾向があります。これを防ぐには、レジストリキーを設定します。
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" -Name "LegacyDefaultPrinterMode" -Value 1 -Force
次に、次のようにして、優先するデフォルトのプリンターを設定できます。
$Printer = Get-CimInstance -Class Win32_Printer -Filter "Name='Ricoh IM 2702'" Invoke-CimMethod -InputObject $Printer -MethodName SetDefaultPrinter
これはちょっとしたハックですが、ほとんどの設定で機能します。特に、Windows がデフォルトを独自に再割り当てし続ける場合は有効です。
プリンターを完全に削除する方法
プリンターを処分する必要がある場合は、次のように簡単です。
Remove-Printer -Name "HP LaserJet M1530"
ただし、問題が発生している場合は、ドライバーを削除することも忘れないでください。
Remove-PrinterDriver -Name "HP Universal Printing PCL 6"
これにより、リソースが解放されたり、ドライバの競合が修正されたりすることがあります。ドメイン環境では、これらの処理はGPOによって行われることが多いため、問題が発生している場合はポリシーを確認してください。
確かに、Invoke-CimMethodテストページを印刷したり、キューをクリーンアップしたりすることで、頑固な問題を追跡するのに役立ちます。例えば:
Invoke-CimMethod -MethodName "printtestpage" -InputObject (Get-CimInstance Win32_Printer | Where {$_. Name -eq "HP LaserJet M1530"})
この強制テスト印刷により、プリンターが実際にオンラインになっているか、それともゴースト設定が残っているだけなのかがわかります。
PowerShellでプリンターをいじるのは完璧ではありませんが、特にトラブルシューティングや大規模な展開を行う際には、あれこれクリックするよりも間違いなく高速です。最初の試みではうまくいかないこともありますが、適切なコマンドさえ覚えてしまえば、状況は一変します。
まとめ
- 新しいプリンターをインストールする前に、ドライバーがドライバーストアにあることを確認してください
- ネットワークプリンターを追加する前にポートを作成する
- PowerShell を使用してリモート管理と一括設定を行う
- 必要に応じてプリンターとドライバーを削除してクリーンアップする
まとめ
PowerShellはちょっと変わった使い方ですが、一度慣れてしまえばプリンター管理には強力です。特にドライバー関連では、試行錯誤が必要になるかもしれません。これらのコマンドが、プリンター管理のストレスを軽減し、少しでも楽にしてくれることを願っています。ただし、一部のマシンでは、PowerShellを管理者として実行するか、その後デバイスリストを更新しないと機能しないことに注意してください。誰かの時間を節約できるといいですね。