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!







