PowerShell : 印表機管理(增/刪/設定)

在以前的批次檔年代,實在太難利用它來做印表機的管理了。
有了PowerShell,想一次利用PS來大量佈署重複的印表機,或是一次想增刪多部印表機真的方便又快速。在這裡稍微說明一下。

印表機的安裝大致上分成:驅動程式>Port>印表機。
利用PowerShell新增印表機,一定要按照上面的順序做
pnputil.exe – 驅動程式
Add-PrinterDriver – 驅動程式
Add-PrinterPort – Port
Add-Printer – 印表機
所以,在辦公室要用指令安裝印表機大致上會非常兩種
1.透過印表機伺服器來安裝/列印
2.電腦直連印表機(USB/Ethernet)

無論你是透過哪一種方式使用印表機,你想用PS來新增印表機之前,你的電腦都必要先有驅動程式。它分為兩階段。我以HP Universal Printing PCL 6 為例
Driver Name必須要一字不差用””包起來。Driver可以從印表機的伺服器內印表機的伺服器內容裡看到。(前提是你要有裝過)

要新增Driver分兩階段。
第一階段是把印表機驅動新增到Windows Driver Store裡面。用的是pnputil.exe 的程式。後面下參數/add-driver和驅動程式路徑、/install,即可新增並安裝。

pnputil /add-driver "D:\Tools\HPUPD6.6.5\pcl6-x64-6.6.5.23510\*.inf" /install

第二階段是把剛剛新增驅動程式新增到印表機的伺服器驅動程式裡方便使用


Add-PrinterDriver -Name "HP Universal Printing PCL 6 (v6.6.5)"

驅動程式作業完成之後,就可以來新增印表機了。
如前述,先講第一種透過印表機伺服器的方式來安裝印表機
直接使用Add-Printer 加上ConnectionName即可。如果Server上的驅動和你已經安裝過的驅動相同就會直接套用你現有的。

Add-Printer -ConnectionName "\\10.0.0.1\HPLaserJet C300DN"

如果有錯誤找不到驅動,請自行加上 -DriverName參數

Add-Printer -ConnectionName "\\10.0.0.1\HPLaserJet M607" -DriverName "HP Universal Printing PCL 6 (v6.6.5)"

這種效果就如同你透過網路找到印表機伺服器之後直接點兩下來安裝印表機

再來就是透過Local Port或是TCP/IP的方式來安裝印表機。這種則必須先建立好PrinterPort再新增印表機,Add-PrinterPort需要Name參數指定名稱,-PrinterHostAddress指定印表機IP位址是直連印表機的。

Add-PrinterPort -Name "ABC001" -PrinterHostAddress "10.0.0.10"

再來就是利用Add-Printer來新增印表機,使用Name印表機名稱、PortName指定剛剛新增的Port、DriverName指定前面剛剛新增的驅動程式、Comment則可有可無,裡面可以放註解說明

Add-Printer -Name "HP LaserJet M607" -PortName ABC001 -DriverName "HP Universal Printing PCL 6 (v6.6.5)" -Comment "ABC001"

如此一來就可以透過PowerShell來一次新增很多印表機(例如Server上)

不過如果你有指定印表機的紙匣/顏色/紙張Size還是必須透過圖形介面去調整。
我猜測也可以透過變更機碼方式來直接修改,不過那個比較複雜下次再研究吧!

如果印表機變更IP,也很容易可以快速替換。首先要確定印表機沒有列印工作正在執行。依照下面的順序來執行,新增Printer Port,修改Printer裡面PrinterPort的設定,然後把舊的PrinterPort移除。

Add-PrinterPort -Name XYZ001 -PrintHostAddress "10.0.0.100"
Set-Printer -Name "HP LaserJet M607" -PortName XYZ001
Remove-PrinterPort -Name ABC001

最後是移除印表機的部分,順序與安裝印表機相反。
如果是移除連線到透過伺服器的連線的印表機下面的方式就可以直接移除。

Remove-Printer -Name \\10.0.0.1\ABC001

如果想連驅動程式一併移除 。執行下面的也可一併移除

Remove-PrinterDriver -Name "HP Universal Printing PCL 6 (v6.6.5)"

再來是說明移除直連的印表機
想移除的很乾淨,就是先移除Printer,移除PrinterPort,移除印表機驅動程式

Remove-Printer -Name "HP LaserJet M607"
Remove-PrinterPort -Name XYZ001
Remove-PrinterDriver -Name "HP Universal Printing PCL 6 (v6.6.5)"

最後說明,可以透過下面指令查詢目前的狀態

Get-Printer #查詢目前印表機
Get-PrinterPort #查詢所有安裝的印表機Port
Get-PrinterDriver #查詢所安裝的印表機驅動程式