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

Windows Server/Windows 10: วิธีลบงานพิมพ์ที่ค้างด้วย PowerShell (Spooler)


สัปดาห์นี้ฉันมีงานลบงานพิมพ์ออกจากคิว อย่างไรก็ตามบางส่วนไม่สามารถลบออกได้ ดังนั้นฉันจึงตัดสินใจเขียนบทความเกี่ยวกับเรื่องนี้และสคริปต์ PowerShell ด้วย การลบงานพิมพ์บนเซิร์ฟเวอร์การพิมพ์เกี่ยวข้องกับ 3 งาน: หยุดบริการตัวจัดคิวงาน ลบเนื้อหาทั้งหมดในไดเร็กทอรี den spool และในที่สุดก็เริ่มบริการตัวจัดคิว มารวมเข้าด้วยกันในสคริปต์ PowerShell

ฟังก์ชั่นการทำงาน

สคริปต์ทำสิ่งต่อไปนี้:

  • หยุดบริการตัวจัดคิว
  • ลบเนื้อหาทั้งหมดของ C:\Windows\System32\spool\PRINTERS\
  • เริ่มบริการตัวจัดคิว

สิ่งนี้รับประกันได้ว่างานพิมพ์ที่ค้างอยู่ทั้งหมดจะถูกลบออก หวังว่า?

ในการดำเนินการ …

คุณแน่ใจหรือว่าต้องการทำเช่นนี้? พิจารณาว่าคุณจะลบงานพิมพ์ทั้งหมด!

กด Y

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

บท

สุดท้ายแต่ไม่ท้ายสุดคือสคริปต์นั่นเอง มันเป็นงานที่รวดเร็วและยังไม่สมบูรณ์แบบแต่ก็ทำในสิ่งที่ควรจะทำ จบเรื่อง.

do {
Write-Host '""""\\ This script deletes all print jobs. """"\\'
''
$sure=Read-Host "Are you sure you want to delete all Print Jobs on $env:computername (Y/N)"
''
If ($sure -eq 'Y')

{
'================================================================='

Stop-Service spooler
Write-Host '1. Stopping Spooler Service ...' -ForegroundColor Green
Remove-Item -Path $env:windir\system32\spool\PRINTERS\*.*
Write-Host "2. Clearing content in $env:windir\system32\spool\PRINTERS" -ForegroundColor Green
Write-Host '3. Starting Spooler Service ...' -ForegroundColor Green
$start=Start-Service Spooler -ErrorAction Ignore
If ((Get-Service spooler).status -eq 'Stopped')
{Write-Host '!!! Error. Spooler could not be started or stopped. Check Service. !!!' -ForegroundColor Red}

'================================================================='
''

PAUSE
}
}
while ($sure -ne 'N')

คัดลอกโค้ดใน PowerShell ISE และบันทึกเป็นไฟล์ ps1 ตามค่าเริ่มต้น Windows จะเปิดไฟล์ ps1 ด้วยแผ่นจดบันทึก นั่นไม่ดี คุณสามารถเปลี่ยนการตั้งค่าได้โดยแก้ไขการตั้งค่าโปรแกรมเริ่มต้นสำหรับนามสกุลไฟล์ แต่วิธีที่ดีที่สุด (รวมถึง Windows UAC ด้วย) คือการจัดเก็บไฟล์ไว้ที่ใดที่หนึ่งและใส่ลิงก์ไว้บนเดสก์ท็อปของคุณ

วางลงบนเดสก์ท็อปของคุณผ่านลิงก์

มีหลายวิธีในการเรียกสคริปต์นี้ ตัวอย่างเช่น คุณสามารถใส่ไว้ในฟังก์ชันหรือเรียกใช้ผ่านลิงก์ได้ สคริปต์ของฉันอยู่ที่ C:\PowerShell และชื่อของไฟล์คือ Clear_Print_Jobs.ps1

จากนั้นสร้างทางลัดบนเดสก์ท็อปของคุณ

ตอนนี้ให้วางบรรทัดต่อไปนี้ในเส้นทางตำแหน่ง:


powershell -noprofile -command "&{start-process powershell -ArgumentList '-noprofile -file "C:\PowerShell\Clear_Print_Jobs.ps1"' -verb RunAs}"

คลิกถัดไปและระบุชื่อสำหรับทางลัด

คลิกเสร็จสิ้น

คลิกขวาและเลือก “Run as administrator” และสนุกกับการลบงานพิมพ์ที่ค้างอยู่!

พบกันใหม่ครั้งหน้ากับ PowerShell!

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