プリンタデバイスが削除できない~コマンドで削除してみる~

通常、プリンタデバイスを削除する場合、

[Ctrl]+[R] を同時押下し、ファイル名を指定して実行ウインドウを表示させ、名前欄に「control printers」を入力することで、プリンタ一覧を表示させることができる。

これが、何かの事情で、削除できない場合がある。
特に、グレーダウン(オフライン)しているデバイスに対し、特に、そのような問題が発生する。

また、プリンタジョブが溜まっていてデバイスを削除できない場合もある。
プリンタジョブの削除においては、VBSスクリプトを作っていた方が簡単だ。
下のソースをメモ帳とかに貼り付け、vbsという拡張子で保存すればOK。プリンタジョブが溜まっている場合には、これをWクリックすれば消える。

プリンタジョブ削除.vbs
WScript.Echo “プリントジョブを削除します。”

Set Locator = WScript.CreateObject(“WbemScripting.SWbemLocator”)
Set Service = Locator.ConnectServer
Set Jobs = Service.ExecQuery(“Select * From Win32_PrintJob”)

For Each oJob In Jobs
set oJobs = Service.Get(“Win32_PrintJob.Name='” & oJob.Name & “‘”)
oJobs.Delete_()
Next

WScript.Echo “プリントジョブを削除しました。”

プリントジョブの影響でデバイスが削除できない場合、一度、Print Spoolerサービスを停止してから、スクリプトを実行し、改めてPrint Spoolerを起動する、という方法もある。
サービス一覧の表示は、先ほどのファイル名を指定して実行の名前欄に、「services.msc」を入力して、OKすれば良い。

サービス一覧から、print spooler を探します。

 

コンパネからプリンターデバイスの削除ができない場合は、コマンドで処理することが、最も簡単だ。(じゃ、早く言え…的な)

プリンター名をコピペするので、PowerShellを利用した方が簡単かもしれない。
PowerShellを管理者として実行します。

 

プリンタを削除する必要があるので、管理者権限が必要です。
PowerShellを管理者として起動後、Get-Printerでプリンタ一覧情報を取得します。

Remove-Printer -Name “対象プリンタ名” で、プリンタが削除されます。
削除されたか、Get-Printerで確認してみましょう。削除されてますね。
ちなみに、コマンドだと、
rundll32 printui.dll,PrintUIEntry /q /dl /n “対象プリンタ名” となります。

プリンタドライバも削除したい場合には、ドライバ一覧を取得します。
Get-PrinterDriver
削除したい場合には、Remove-PrinterDriver -Name “プリンタードライバー名” で削除します。

 

よくあるケースとして、「同じ名前のポートが既に存在しています」というエラーが出た場合、これも情報取得がPowerShellでは簡単です。
Get-PrinterPortで、状況を判断することができます。

削除する場合は、
Remove-PrinterPort -Name “対象ポート名”
となります。

Author: 管理者