こちらのように”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