ค้นหาเว็บไซต์

สคริปต์ PowerShell เพื่อเริ่มบริการตัวจัดคิวงานพิมพ์ใหม่


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

ในภาพด้านบน มี 2 งานติด/หยุดชั่วคราวในคิวเครื่องพิมพ์และไม่สามารถพิมพ์ได้

ในโพสต์บล็อกนี้ ฉันจะอธิบายวิธีแก้ปัญหาที่เกี่ยวข้องกับตัวจัดคิวเครื่องพิมพ์ที่หยุดทำงานบน Windows โดยใช้สคริปต์ PowerShell

แก้ไขปัญหาบริการตัวจัดคิวงานพิมพ์

หากไฟล์ไม่ถูกส่งไปยังเครื่องพิมพ์หรือเอกสารติดอยู่ในคิวเครื่องพิมพ์ สาเหตุที่พบบ่อยกว่านั้นคือบริการตัวจัดคิวเครื่องพิมพ์อาจไม่ทำงาน

Print Spooler คือชื่อบริการของ Windows สำหรับ Print Spooler เป็นค่าเริ่มต้นที่เปิดใช้งานบนระบบปฏิบัติการ Windows และระบบปฏิบัติการเซิร์ฟเวอร์ทั้งหมด งานหลักของบริการตัวจัดคิวเครื่องพิมพ์คือการโหลดไดรเวอร์การพิมพ์ งานพิมพ์ การจัดคิวงาน และจัดการการโต้ตอบกับเครื่องพิมพ์

เพื่อตรวจสอบสถานะบริการตัวจัดคิวเครื่องพิมพ์

ใช้สคริปต์ PowerShell ด้านล่าง

$PrintSpooler = Get-Service -Name Spooler

# Get the Print Spooler Service status (Running or Stopped
$PrintSpooler

ในสคริปต์ PowerShell ข้างต้น โดยใช้ Get-Service cmdlet รับวัตถุบริการ Spooler และกำหนดให้กับตัวแปร $PrintSpooler

ในบรรทัดถัดไป ให้พิมพ์เนื้อหาของตัวแปร $PrintSpooler โดยจะแสดงผลสถานะบริการตัวจัดคิวงานพิมพ์ ชื่อ และชื่อที่แสดงดังต่อไปนี้

PowerShell - รีสตาร์ทตัวจัดคิวงานพิมพ์

$PrintSpooler = Get-Service -Name Spooler

# Get the Print Spooler Service status (Running or Stopped)
$PrintSpooler

# Logic to check Print Spooler Service and restart if not running

if($PrintSpooler.Status -eq 'stopped')
{
    # Start Print Spooler Service on local computer
    Start-Service $PrintSpooler
}

# Check the Print Spool Service status 
$PrintSpooler

ในสคริปต์ PowerShell ข้างต้น

  • รับวัตถุบริการตัวจัดคิว
  • ตรวจสอบสถานะบริการตัวจัดคิวงานพิมพ์
  • ตรวจสอบว่าบริการตัวจัดคิวงานพิมพ์อยู่ในสถานะหยุดทำงานหรือไม่
  • หากบริการตัวจัดคิวงานพิมพ์เท่ากับสถานะหยุด ให้เริ่มบริการตัวจัดคิวงานเครื่องพิมพ์ใหม่โดยใช้คำสั่ง Start-Service Spooler

เคล็ดลับเด็ด: วิธีรับสิทธิ์ในโฟลเดอร์และโฟลเดอร์ย่อย!

วิธีการรีสตาร์ทบริการตัวจัดคิวเครื่องพิมพ์บนเวิร์กสเตชัน

# Get Spooler service object
$PrintSpooler = Get-Service -Name Spooler

#Restart Printer Spooler Service on WorkStation
Restart-Service $PrintSpooler

ในสคริปต์ PowerShell ข้างต้น

  • รับอ็อบเจ็กต์ Spooler Service ในตัวแปร $PrintSpooler
  • การใช้ Restart-Service เริ่มบริการตัวจัดคิวงานพิมพ์บนเวิร์กสเตชันใหม่

เคล็ดลับเด็ด: ใช้การทดสอบการเชื่อมต่อเพื่อ ping รายการคอมพิวเตอร์โดยใช้ PowerShell!

ทำความสะอาดคิวตัวจัดคิวงานพิมพ์

อาจเกิดขึ้นได้ว่าแม้หลังจากรีสตาร์ทบริการตัวจัดคิวเครื่องพิมพ์แล้ว เครื่องพิมพ์ก็ยังไม่ตอบสนองหรือไฟล์ไม่ถูกส่งไปยังเครื่องพิมพ์

เพื่อแก้ไขปัญหาเหล่านี้ เราจำเป็นต้องสำรองข้อมูลคิวเครื่องพิมพ์และล้างคิวตัวจัดคิวเครื่องพิมพ์ในภายหลัง

การสำรองข้อมูลไฟล์คิวตัวจัดคิวเครื่องพิมพ์

ก่อนที่เราจะล้างคิวตัวจัดคิวเครื่องพิมพ์ ให้สำรองข้อมูลคิวโดยใช้สคริปต์ PowerShell ด้านล่าง

# Stop Spooler Service
Stop-Service -Name Spooler -Force
 
# To backup the Spooler files
Move-Item -Path "$env:SystemRoot\System32\spool\PRINTERS\*.*" -Destination 'C:\Spooler\Backup\' -Force

ในตัวอย่างข้างต้น ให้หยุดบริการตัวจัดคิวงานพิมพ์ก่อน

การใช้ Move-Item และเส้นทางคิวสปูลเครื่องพิมพ์ ย้ายไฟล์คิวสปูลไปยังเส้นทางปลายทางตามที่ระบุเป็นข้อมูลสำรอง

ลบไฟล์คิวตัวจัดคิวเครื่องพิมพ์

ขณะที่เราสำรองข้อมูลไฟล์คิวในขั้นตอนข้างต้น ให้เรียกใช้สคริปต์ PowerShell ด้านล่างเพื่อลบไฟล์คิวตัวจัดคิว และเริ่มบริการตัวจัดคิวงานพิมพ์ในภายหลัง

# To delete the Printer Spooler files
Remove-Item -Path "$env:SystemRoot\System32\spool\PRINTERS\*.*"

# Start print spooler service
Start-Service -Name Spooler

ในสคริปต์ PowerShell ข้างต้น Remove-Item cmdlet จะใช้เส้นทางคิวตัวจัดคิวเครื่องพิมพ์ที่ระบุด้วย $env: ตัวแปรสภาพแวดล้อมของเส้นทาง และลบไฟล์ทั้งหมดออกจากโฟลเดอร์

เคล็ดลับเด็ด: วิธีใช้ tail - เพื่อรับบรรทัดสุดท้ายของไฟล์ใน PowerShell!

บทสรุป

ในโพสต์ข้างต้น ฉันได้อธิบายเกี่ยวกับวิธีรีสตาร์ทบริการตัวจัดคิวงานพิมพ์ และใช้คำสั่ง PowerShell ต่างๆ เพื่อแก้ไขปัญหาที่เกี่ยวข้องกับบริการตัวจัดคิวงานพิมพ์ไม่ตอบสนองหรือบริการตัวจัดคิวงานพิมพ์ไม่อยู่ในสถานะทำงาน

ในกรณีเช่นนี้ คุณสามารถ เริ่มบริการตัวจัดคิวงานพิมพ์ใหม่ บนเวิร์กสเตชันภายในหรือระยะไกลได้

คุณสามารถค้นหาหัวข้อเพิ่มเติมเกี่ยวกับคำสั่ง PowerShell Active Directory และพื้นฐาน PowerShell ได้ในหน้าแรกของ ShellGeek

บทความที่เกี่ยวข้อง