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 ประกอบด้วย 22 PowerShell cmdlets สำหรับจัดการเครื่องพิมพ์ ไดรเวอร์ พอร์ตการพิมพ์ และคิว:

  • เพิ่มเครื่องพิมพ์ – เพิ่ม (ติดตั้ง) เครื่องพิมพ์ใหม่;
  • Add-PrinterDriver – ติดตั้งไดรเวอร์การพิมพ์ใหม่
  • Add-PrinterPort – สร้างพอร์ตการพิมพ์ในพื้นที่
  • รับ-พิมพ์การกำหนดค่า – แสดงการกำหนดค่าเครื่องพิมพ์
  • รับเครื่องพิมพ์ – แสดงรายการเครื่องพิมพ์ที่ติดตั้งบนคอมพิวเตอร์
  • Get-PrinterDriver – แสดงรายการไดรเวอร์ที่ติดตั้ง
  • รับเครื่องพิมพ์พอร์ต – แสดงรายการพอร์ตเครื่องพิมพ์;
  • Get-PrinterProperty – แสดงคุณสมบัติของเครื่องพิมพ์
  • รับงานพิมพ์ – รับรายการงานพิมพ์ของเครื่องพิมพ์
  • Read-PrinterNfcTag – รับข้อมูลเครื่องพิมพ์จากแท็ก NFC
  • ลบเครื่องพิมพ์ – นำเครื่องพิมพ์ออก
  • ลบ-PrinterDriver — ลบไดรเวอร์เครื่องพิมพ์
  • ลบ PrinterPort – ถอดพอร์ตเครื่องพิมพ์;
  • ลบ-งานพิมพ์ – ลบงานพิมพ์บนเครื่องพิมพ์
  • เปลี่ยนชื่อ-เครื่องพิมพ์ – เปลี่ยนชื่อเครื่องพิมพ์;
  • รีสตาร์ท-งานพิมพ์ – เริ่มงานพิมพ์ใหม่
  • ประวัติย่อ-งานพิมพ์ – ทำงานพิมพ์ที่หยุดชั่วคราวต่อ
  • Set-PrintConfiguration – ตั้งค่าคอนฟิกเครื่องพิมพ์
  • ชุดเครื่องพิมพ์ – อัปเดตการกำหนดค่าเครื่องพิมพ์
  • Set-PrinterProperty – เปลี่ยนคุณสมบัติของเครื่องพิมพ์
  • ระงับ-งานพิมพ์ – ระงับ (หยุดชั่วคราว) งานพิมพ์;
  • เขียน-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 :พารามิเตอร์ที่ระบุอย่างน้อยหนึ่งรายการสำหรับการดำเนินการนี้มีค่าที่ไม่ถูกต้องที่บรรทัด:1 อักขระ:1 + Add-PrinterDriver -ชื่อ “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 (สคริปต์ผู้ดูแลระบบการพิมพ์) คุณควรดำเนินการสองคำสั่งที่แตกต่างกัน

หลังจากรันคำสั่งเหล่านี้ เครื่องพิมพ์ที่ใช้ร่วมกันใหม่ชื่อ “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

PrintManagement cmdlet ส่วนใหญ่สามารถใช้เพื่อดูสถานะและจัดการเครื่องพิมพ์ ไดรเวอร์ และคิวการพิมพ์บนคอมพิวเตอร์ระยะไกล (เซิร์ฟเวอร์การพิมพ์) ชื่อของคอมพิวเตอร์ระยะไกลหรือเซิร์ฟเวอร์ถูกระบุเป็นอาร์กิวเมนต์ของ –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"

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

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