Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows Server

การจัดการเครื่องพิมพ์และไดรเวอร์ด้วย PowerShell ใน Windows 10 / Server 2016

ในบทความก่อนหน้าเราได้ดูสคริปต์ VBS แบบเก่าๆ ที่สามารถใช้จัดการเครื่องพิมพ์และการดำเนินการพิมพ์ในทุกเวอร์ชันของ Windows เริ่มจาก Windows XP วันนี้เราจะพิจารณาคำสั่งทั่วไปในการติดตั้ง จัดการ และลบเครื่องพิมพ์ พอร์ตพิมพ์ ไดรเวอร์ และคิวพิมพ์โดยใช้ PowerShell วิธีการจัดการเครื่องพิมพ์เหล่านี้จาก PowerShell CLI สามารถใช้ได้ในระบบปฏิบัติการสมัยใหม่ – Windows 10 / 8.1 และ Windows Server 2019 / 2016 / 2012 R2

โมดูล PowerShell: PrintManagement

พร้อมกับการเปิดตัว Windows 8.1 และ Windows Server 2012 R2 Microsoft ได้ปล่อย PowerShell 4.0 ใหม่ (ส่วนหนึ่งของ Windows Management Framework 4.0) ซึ่งขยายรายการ cmdlet การจัดการเซิร์ฟเวอร์พิมพ์ที่ใช้ Windows อย่างมีนัยสำคัญ คุณสามารถรับรายการ cmdlet การจัดการเครื่องพิมพ์ ไดรเวอร์ และคิวพิมพ์ที่มีอยู่ในโมดูล PrintManagement บน Windows 10 (PowerShell v5) ด้วยคำสั่งต่อไปนี้:

Get-Command –Module PrintManagement

การจัดการเครื่องพิมพ์และไดรเวอร์ด้วย PowerShell ใน Windows 10 / Server 2016โมดูล PrintManagement รวม cmdlet PowerShell 22 ตัวสำหรับจัดการเครื่องพิมพ์ ไดรเวอร์ พอร์ตพิมพ์ และคิว:

  • Add-Printer – เพิ่ม (ติดตั้ง) เครื่องพิมพ์ใหม่;
  • Add-PrinterDriver – ติดตั้งไดรเวอร์พิมพ์ใหม่;
  • Add-PrinterPort – สร้างพอร์ตพิมพ์ท้องถิ่น;
  • Get-PrintConfiguration – แสดงการกำหนดค่าเครื่องพิมพ์;
  • Get-Printer – แสดงรายการเครื่องพิมพ์ที่ติดตั้งบนคอมพิวเตอร์;
  • Get-PrinterDriver – แสดงรายการไดรเวอร์ที่ติดตั้ง;
  • Get-PrinterPort – แสดงรายการพอร์ตเครื่องพิมพ์;
  • Get-PrinterProperty – แสดงคุณสมบัติเครื่องพิมพ์;
  • Get-PrintJob – รับรายการงานพิมพ์ของเครื่องพิมพ์;
  • Read-PrinterNfcTag – รับข้อมูลเครื่องพิมพ์จากแท็ก NFC;
  • Remove-Printer – ลบเครื่องพิมพ์;
  • Remove-PrinterDriver — ลบไดรเวอร์เครื่องพิมพ์;
  • Remove-PrinterPort – ลบพอร์ตเครื่องพิมพ์;
  • Remove-PrintJob – ลบงานพิมพ์บนเครื่องพิมพ์;
  • Rename-Printer – เปลี่ยนชื่อเครื่องพิมพ์;
  • Restart-PrintJob – เริ่มงานพิมพ์ใหม่;
  • Resume-PrintJob – ดำเนินการพิมพ์ที่หยุดชั่วคราวต่อ;
  • Set-PrintConfiguration – ตั้งค่าการกำหนดค่าเครื่องพิมพ์;
  • Set-Printer – อัปเดตการกำหนดค่าเครื่องพิมพ์;
  • Set-PrinterProperty – เปลี่ยนคุณสมบัติเครื่องพิมพ์;
  • Suspend-PrintJob – หน่วงเวลา (หยุดชั่วคราว) งานพิมพ์;
  • Write-PrinterNfcTag – เขียนข้อมูลลงแท็ก NFC.

เพื่อรับข้อมูลโดยละเอียดเกี่ยวกับไวยากรณ์ของคำสั่งใดๆ ให้ใช้คำสั่งต่อไปนี้:

Get-Help <cmdlet_name> -Detailed

ตัวอย่างการใช้คำสั่ง:

Get-Help < cmdlet_name> -Examples

มาดูตัวอย่างงานจัดการเครื่องพิมพ์ทั่วไปบางอย่างโดยใช้ PowerShell ใน Windows 10

การเพิ่มไดรเวอร์เครื่องพิมพ์ลงใน DriverStore

เพื่อแสดงรายการไดรเวอร์พิมพ์ที่ติดตั้งใน Windows DriverStore:

Get-PrinterDriver

การจัดการเครื่องพิมพ์และไดรเวอร์ด้วย PowerShell ใน Windows 10 / Server 2016

จากนั้น ติดตั้งไดรเวอร์เครื่องพิมพ์ใหม่ในระบบ ตัวอย่างเช่น คุณต้องการติดตั้งไดรเวอร์พิมพ์ยอดนิยม "HP Universal Printing PCL 6" ตามเอกสาร คำสั่ง PowerShell สำหรับเพิ่มไดรเวอร์พิมพ์ควรเป็นดังนี้:

Add-PrinterDriver -Name "HP Universal Printing PCL 6" -InfPath "C:\Distr\HP-pcl6-x64\hpcu118u.inf"

อย่างไรก็ตาม เมื่อพยายามติดตั้งไดรเวอร์ด้วยวิธีนี้ ข้อความแสดงข้อผิดพลาดต่อไปนี้จะปรากฏขึ้น:

Add-PrinterDriver : One or more specified parameters for this operation has an invalid value.At line:1 char:1+ Add-PrinterDriver -Name “HP Universal Printing PCL 6” -InfPath “C:\Di …+ ~~~~~~~~~~~~~~~~~~~~~~~~~+ CategoryInfo : InvalidArgument: (MSFT_PrinterDriver:ROOT/StandardCimv2/MSFT_PrinterDriver) [Add-PrinterDriver], CimException + FullyQualifiedErrorId : HRESULT 0x80070057,Add-PrinterDriver

การจัดการเครื่องพิมพ์และไดรเวอร์ด้วย PowerShell ใน Windows 10 / Server 2016

เกิดขึ้นได้ว่า ไดรเวอร์จากไฟล์ INF สามารถติดตั้งได้ก็ต่อเมื่อมันมีอยู่ใน DriverStore แล้ว ซึ่งหมายความว่าคุณไม่สามารถติดตั้งไดรเวอร์พิมพ์ที่ไม่อยู่ใน Driver Store โดยใช้คำสั่ง Add-PrinterDriver เพื่อเพิ่มไดรเวอร์เข้า DriverStore คุณสามารถใช้:

  • สคริปต์ VBS ที่อธิบายในบทความก่อนหน้า;
  • ยูทิลิตี้ — pnputil.exe คำสั่งอาจมีลักษณะดังนี้: pnputil.exe -i -a C:\Distr\HP-pcl6-x64\hpcu118u.inf (ติดตั้งไดรเวอร์เครื่องพิมพ์เฉพาะ) หรือ pnputil.exe -i -a C:\Distr\HP-pcl6-x64\*.inf (ติดตั้งไดรเวอร์ทั้งหมดที่พบในไฟล์ INF ในไดเรกทอรีที่ระบุ);การจัดการเครื่องพิมพ์และไดรเวอร์ด้วย PowerShell ใน Windows 10 / Server 2016
  • cmdlet Add-WindowsDriver ที่อนุญาตให้รวมไดรเวอร์เข้ากับอิมเมจ Windows แบบออฟไลน์

หลังจากเพิ่มไดรเวอร์เครื่องพิมพ์เข้าไปในที่เก็บไดรเวอร์ คุณควรติดตั้งมันบนเซิร์ฟเวอร์พิมพ์:

Add-PrinterDriver -Name "HP Universal Printing PCL 6"

การจัดการเครื่องพิมพ์และไดรเวอร์ด้วย PowerShell ใน Windows 10 / Server 2016

เคล็ดลับ. วิธีค้นหาว่าควรระบุอะไรในฟิลด์ชื่อไดรเวอร์พิมพ์เมื่อติดตั้งไดรเวอร์ผ่าน PowerShell? ชื่อไดรเวอร์พิมพ์ที่ระบุต้องตรงกับชื่อภายในของระบบโดยตรง มิฉะนั้นจะเกิดข้อผิดพลาดระหว่างการติดตั้งไดรเวอร์ คุณสามารถค้นหาชื่อไดรเวอร์ที่ถูกต้องได้โดยใช้คำสั่ง get-printerdriver บนคอมพิวเตอร์ที่ติดตั้งไดรเวอร์พิมพ์นี้ไว้แล้ว หรือโดยตรวจสอบไฟล์ .inf ของไดรเวอร์ด้วยตนเองการจัดการเครื่องพิมพ์และไดรเวอร์ด้วย PowerShell ใน Windows 10 / Server 2016

วิธีติดตั้งเครื่องพิมพ์โดยใช้ PowerShell

สร้างพอร์ต IP สำหรับเครื่องพิมพ์เครือข่าย (ที่นี่คุณสามารถระบุทั้งที่อยู่ IP ของเครื่องพิมพ์เครือข่ายและชื่อของเซิร์ฟเวอร์พิมพ์ระยะไกล):

Add-PrinterPort -Name "IP_192.168.10.26" -PrinterHostAddress "192.168.10.26"

ก่อนเพิ่มพอร์ตพิมพ์ IP ใหม่ คุณสามารถตรวจสอบได้ว่ามันมีอยู่แล้วหรือไม่:

$portName = "IP_192.168.10.26"
$checkPortExists = Get-Printerport -Name $portname -ErrorAction SilentlyContinue
if (-not $checkPortExists) {
Add-PrinterPort -name $portName -PrinterHostAddress "192.168.10.26"
}

ด้วยคำสั่งต่อไปนี้ เราจะติดตั้งและแชร์เครื่องพิมพ์ใหม่บนคอมพิวเตอร์:

Add-Printer -Name hp3027_Office1_Buh -DriverName "HP LaserJet M3027 MFP PCL6 Class Driver" -PortName IP_192.168.10.26 -Shared -ShareName "hp3027_1_BUh" –Published

การจัดการเครื่องพิมพ์และไดรเวอร์ด้วย PowerShell ใน Windows 10 / Server 2016

หมายเหตุ: โปรดทราบว่าการดำเนินการเดียวกัน (ติดตั้งและแชร์เครื่องพิมพ์) โดยใช้สคริปต์ VBS (Printing Admin scripts) คุณควรทำคำสั่ง 2 คำสั่งที่แตกต่างกัน

หลังจากรันคำสั่งเหล่านี้ เครื่องพิมพ์แชร์ใหม่ชื่อ "hp3027_Office1" จะปรากฏในระบบ

การจัดการเครื่องพิมพ์และไดรเวอร์ด้วย PowerShell ใน Windows 10 / Server 2016

เพื่อเปลี่ยนชื่อเครื่องพิมพ์ ให้รันคำสั่ง:

Rename-Printer -Name "hp3027_1_Buh" -NewName "hp3027_F1_Salary"

แสดงรายการเครื่องพิมพ์ที่ติดตั้งบนเซิร์ฟเวอร์พิมพ์

มาแสดงรายการเต็มของเครื่องพิมพ์ที่ติดตั้งบนคอมพิวเตอร์นี้:

Get-Printer

ตามที่คุณเห็น คำสั่งแสดงชื่อเครื่องพิมพ์ ประเภท (ท้องถิ่นหรือเครือข่าย) ไดรเวอร์ พอร์ตพิมพ์ ว่าเครื่องพิมพ์ถูกแชร์และเผยแพร่ใน Active Directory หรือไม่

การจัดการเครื่องพิมพ์และไดรเวอร์ด้วย PowerShell ใน Windows 10 / Server 2016

Cmdlet PrintManagement ส่วนใหญ่สามารถใช้ดูสถานะและจัดการเครื่องพิมพ์ ไดรเวอร์ และคิวพิมพ์บนคอมพิวเตอร์ระยะไกล (เซิร์ฟเวอร์พิมพ์) ชื่อของคอมพิวเตอร์หรือเซิร์ฟเวอร์ระยะไกลจะถูกระบุเป็นอาร์กิวเมนต์ของพารามิเตอร์ –ComputerName

คุณสามารถรับข้อมูลเกี่ยวกับเครื่องพิมพ์ที่ติดตั้งบนคอมพิวเตอร์ระยะไกลโดยใช้คำสั่ง PowerShell:

Get-Printer -ComputerName rome-prnt1 | Format-List Name,DriverName

เพื่อแสดงรายการเครื่องพิมพ์ที่แชร์เท่านั้น ให้ใช้คำสั่ง:

Get-Printer -ComputerName rome-prnt1 | where Shared -eq $true | fl Name

การเชื่อมต่อกับเครื่องพิมพ์เครือข่ายที่แชร์ด้วย PowerShell

เพื่อเชื่อมต่อเครื่องพิมพ์ที่แชร์จากเซิร์ฟเวอร์พิมพ์ ให้ใช้คำสั่ง:

Add-Printer -ConnectionName \\rome-prnt1\HP3027

Windows 10 ใช้เครื่องพิมพ์ล่าสุดที่ใช้สำหรับพิมพ์เป็นเครื่องพิมพ์เริ่มต้น หากคุณต้องการใช้เครื่องพิมพ์เริ่มต้นที่คงที่ ให้รันคำสั่ง:

Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" -Name "LegacyDefaultPrinterMode" -Value 1 –Force

เพื่อตั้งค่าเครื่องพิมพ์เริ่มต้น คุณสามารถใช้คำสั่งต่อไปนี้:

$wsnObj = New-Object -COM WScript.Network
$wsnObj.SetDefaultPrinter(%PrinterName%)

วิธีลบเครื่องพิมพ์โดยใช้ PowerShell

เพื่อลบเครื่องพิมพ์ คุณต้องรันคำสั่ง PowerShell ต่อไปนี้:

Remove-Printer -Name "hp3027_L1_O1"

คุณสามารถลบไดรเวอร์เฉพาะได้โดยใช้ cmdlet Remove-PrinterDriver:

Remove-PrinterDriver -Name "HP Universal Printing PCL 6"