如何透過 PowerShell 批次新增或刪除印表機

Ivan Cheng
9 min readSep 1, 2023

製造執行系統的伺服器為了讓產線能順利列印流程卡或者標籤,通常會安裝大量的印表機,以下簡單介紹如何透過 PowerShell 來大量佈署重複的印表機。

基本的印表機安裝步驟大致如下

  • 安裝驅動程式
  • 新增連接埠
  • 新增印表機

想要利用 PowerShell 新增印表機,一定要按照上面的順序做。

安裝驅動程式

驅動程式建議選擇 PCL 列印通用驅動程式,管理員不需要為了不同的機器設備管理多個印表機驅動程式,大幅地降低人員的操作成本。

使用內建的 pnputil 指令,把驅動程式新增到伺服器裡面。

pnputil /add-driver "C:\Users\Administrator\Downloads\Win_32_64Bit_UD2_PCL6_1510a\UD2_02_PCL6_1510a\EnglishA\PCL6\64bit\*.inf" /install

把剛剛新增驅動程式新增到印表機的伺服器驅動程式

Add-PrinterDriver -Name "SHARP UD2 PCL6"

不知道驅動程式名稱的話,可以透過下列指令查看。

Get-PrinterDriver

Name PrinterEnvironment MajorVersion Manufacturer
---- ------------------ ------------ ------------
Microsoft XPS Document Writer v4 Windows x64 4 Microsoft
Microsoft Print To PDF Windows x64 4 Microsoft
SHARP UD2 PCL6 Windows x64 3 SHARP
Microsoft enhanced Point and Pri... Windows x64 3 Microsoft
Microsoft enhanced Point and Pri... Windows NT x86 3 Microsoft

驅動程式作業完成之後,就可以來新增連接埠了。

新增連接埠

透過 Local Port 或是 TCP/IP 的方式,則必須先建立好 PrinterPort 再來新增印表機。

Add-PrinterPort -Name "192.168.0.200" -PrinterHostAddress "192.168.0.200"

連接埠新增完成後,就可以來新增印表機了。

新增印表機

最後就是利用 Add-Printer 來新增印表機

  • Name:新增的印表機名稱
  • PortName:新增的連接埠名稱
  • DriverName:新增的驅動程式名稱
  • Comment:註解說明
Add-Printer -Name "SHARP MX-2651" -PortName "192.168.0.200" -DriverName "SHARP UD2 PCL6" -Comment "註解說明"

印表機新增成功

印表機 IP 變更

如果印表機變更 IP,也很容易可以快速替換。

首先要確定印表機沒有列印工作正在執行,依照下面的順序來執行,新增 Printer Port,修改 Printer 裡面 PrinterPort 的設定,然後把舊的 Printer Port 移除。

Add-PrinterPort -Name "192.168.0.201" -PrintHostAddress "192.168.0.201"
Set-Printer -Name "SHARP UD2 PCL6" -PortName "192.168.0.201"
Remove-PrinterPort -Name "192.168.0.200"

如此一來就可以透過 PowerShell 來一次新增很多印表機

pnputil /add-driver "C:\Users\Administrator\Downloads\Win_32_64Bit_UD2_PCL6_1510a\UD2_02_PCL6_1510a\EnglishA\PCL6\64bit\*.inf" /install
Add-PrinterDriver -Name "SHARP UD2 PCL6"

Add-PrinterPort -Name "192.168.0.202" -PrinterHostAddress "192.168.0.202"
Add-PrinterPort -Name "192.168.0.203" -PrinterHostAddress "192.168.0.203"
Add-PrinterPort -Name "192.168.0.204" -PrinterHostAddress "192.168.0.204"

Add-Printer -Name "SHARP MX-2651 管理部" -PortName "192.168.0.202" -DriverName "SHARP UD2 PCL6"
Add-Printer -Name "SHARP MX-2651 業務部" -PortName "192.168.0.203" -DriverName "SHARP UD2 PCL6"
Add-Printer -Name "SHARP MX-2651 資訊部" -PortName "192.168.0.204" -DriverName "SHARP UD2 PCL6"

刪除印表機

刪除印表機的部分,順序與安裝印表機相反。

Remove-Printer -Name "SHARP MX-2651 管理部"
Remove-Printer -Name "SHARP MX-2651 業務部"
Remove-Printer -Name "SHARP MX-2651 資訊部"

Remove-PrinterPort -Name "192.168.0.202"
Remove-PrinterPort -Name "192.168.0.203"
Remove-PrinterPort -Name "192.168.0.204"

Remove-PrinterDriver -Name "SHARP UD2 PCL6"

批次新增

如果我們今天想把印表機安裝到別台伺服器身上可以怎麼做

先針對連接埠與印表機匯出清單。

將匯出的清單移除不必要的資訊如下

再執行下列 PowerShell 就可以收工了

# 執行前請先執行這兩行指令
# Import-Module -Name ImportExcel
# Set-ExecutionPolicy RemoteSigned

$worksheetName = "連接埠"
$portFilePath = "C:\Users\Administrator\Downloads\連接埠.xlsx"
$ports = Import-Excel -Path $portFilePath -WorksheetName $worksheetName

$worksheetName = "印表機"
$printerFilePath = "C:\Users\Administrator\Downloads\印表機.xlsx"
$printers = Import-Excel -Path $printerFilePath -WorksheetName $worksheetName

foreach ($port in $ports) {

Add-PrinterPort -Name $port.連接埠名稱 -PrinterHostAddress $port.連接埠名稱

foreach ($printer in $printers) {

if ($printer.印表機名稱 -eq $port.印表機名稱) {
Add-Printer -Name $printer.印表機名稱 -PortName $port.連接埠名稱 -DriverName $printer.驅動程式名稱
break
}
}
}

刪除則比較簡單,反過來操作即可。

$worksheetName = "連接埠"
$portFilePath = "C:\Users\ivan_cheng\Downloads\連接埠.xlsx"
$ports = Import-Excel -Path $portFilePath -WorksheetName $worksheetName

$worksheetName = "印表機"
$printerFilePath = "C:\Users\ivan_cheng\Downloads\印表機.xlsx"
$printers = Import-Excel -Path $printerFilePath -WorksheetName $worksheetName

foreach ($printer in $printers) {
Remove-Printer -Name $printer.印表機名稱
}

foreach ($port in $ports) {
Remove-PrinterPort -Name $port.連接埠名稱
}

印表機的進階設定

如果需要更改紙張大小或者灰階列印,目前還是必須透過圖形介面去調整。

也許可以透過變更機碼方式來實現,就交給大家去研究了。

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Print/Printers

參考文件

--

--