ポート名を指定して既存のプリンタドライバを削除する

こちらのように”rundll32.exe printui.dll,PrintUIEntry ~”を使用すればコマンドラインからプリンタをインストールする事で設定の共通化を出来るが、既に同一ポート名でプリンタが導入されていた場合に複数のプリンタドライバをインストール出来てしまう。同一ポートを使用するプリンタドライバをインストールしてしまうと、設定⇒デバイス⇒プリンタとスキャナーで表示したときに、一つに集約されてしまい、非常に扱い難くなる。

そこで事前に以下のPowershellスクリプトでポート名を指定して既存プリンタを削除しておく事で、同一ポート名で重複登録することを防ぐとよい。

#RemovePrinterWithPort.ps1
$removePort = $args[0];
$printerNameKey = "プリンター名";
$portNameKey = "ポート名";

$printerName = "";
$portName = "";
cscript $env:SystemRoot\System32\Printing_Admin_Scripts\ja-JP\prnmngr.vbs -l | ForEach-Object {
    if ($_ -match ('^' + $printerNameKey + '.*'))
    {
        $printerName = $_.Replace(($printerNameKey + " "), "");
    }

    if ($_ -match ('^' + $portNameKey + '.*'))
    {
        $portName = $_.Replace(($portNameKey + " "), "");
        if ($portName -eq $removePort)
        {
            ("Remove Printer : " + $printerName);
            cscript $env:SystemRoot\System32\Printing_Admin_Scripts\ja-JP\prnmngr.vbs -d -p $printerName;
        }
    }
}

exit;

上記スクリプトをRemovePrinterWithPort.ps1で保存し、以下のコマンドでコマンドプロンプトから呼び出す。

 powershell.exe -Command .\RemovePrinterWithPort.ps1 IP_192.168.0.10

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です