本文目录导读:

- Windows PowerShell 获取打印任务
- Windows Batch 脚本
- Python 脚本
- Linux 系统 (CUPS)
- Python (Linux)
- 跨平台方案(使用 Python)
- 实时监控打印任务(完整示例)
- 注意事项
我来介绍几种获取打印任务的方法,涵盖不同场景:
Windows PowerShell 获取打印任务
使用 Win32_PrintJob WMI 类
# 获取所有打印任务
Get-WmiObject -Class Win32_PrintJob | Select-Object Name, Document, Owner, Status, TotalPages, JobStatus
# 获取当前活动的打印任务
Get-WmiObject -Class Win32_PrintJob | Where-Object {$_.Status -ne "Completed"}
使用 PrintJob 类(Windows 10/11)
# 查看当前打印队列
Get-Printer | ForEach-Object {
Write-Host "打印机: $($_.Name)"
Get-PrintJob -PrinterName $_.Name
}
Windows Batch 脚本
@echo off rem 查看默认打印机的打印队列 wmic printjob get name,Document,Owner,Status,TotalPages rem 或者 powershell "Get-WmiObject Win32_PrintJob | Select Document,Owner,Status,TotalPages"
Python 脚本
Windows 系统
import subprocess
import wmi
def get_print_jobs():
# 方法1:使用 wmi 模块
c = wmi.WMI()
jobs = c.Win32_PrintJob()
for job in jobs:
print(f"文档: {job.Document}")
print(f"用户: {job.Owner}")
print(f"状态: {job.Status}")
print(f"页数: {job.TotalPages}")
print("-" * 30)
# 方法2:使用 subprocess 调用 powershell
cmd = 'powershell "Get-WmiObject Win32_PrintJob | Select Document,Owner,Status"'
result = subprocess.run(cmd, capture_output=True, text=True)
print(result.stdout)
if __name__ == "__main__":
get_print_jobs()
Linux 系统 (CUPS)
# 查看打印任务
lpstat -o
lpstat -W all # 显示所有任务(包括完成的)
# 结合 awk 筛选特定属性
lpstat -o | awk '{print $1, $4}'
# 监控实时打印任务
watch -n 1 lpstat -o
Python (Linux)
import subprocess
def get_linux_print_jobs():
# 获取打印任务
result = subprocess.run(['lpstat', '-o'], capture_output=True, text=True)
if result.stdout:
lines = result.stdout.split('\n')
for line in lines:
if line.strip():
print(line)
# 获取打印机列表
printers = subprocess.run(['lpstat', '-p'], capture_output=True, text=True)
print(f"\n打印机状态:\n{printers.stdout}")
def monitor_print_jobs():
"""监听打印任务变化"""
import time
previous_jobs = set()
while True:
result = subprocess.run(['lpstat', '-o'], capture_output=True, text=True)
current_jobs = set(result.stdout.split('\n')[:-1])
# 检测新任务
new_jobs = current_jobs - previous_jobs
if new_jobs:
print(f"新打印任务: {new_jobs}")
# 检测完成的任务
completed_jobs = previous_jobs - current_jobs
if completed_jobs:
print(f"任务完成: {completed_jobs}")
previous_jobs = current_jobs
time.sleep(2) # 每2秒检查一次
if __name__ == "__main__":
get_linux_print_jobs()
# monitor_print_jobs() # 如果想监控可以取消注释
跨平台方案(使用 Python)
import platform
import subprocess
import json
def get_print_jobs_cross_platform():
system = platform.system()
if system == "Windows":
# Windows 系统
cmd = [
'powershell',
'Get-WmiObject Win32_PrintJob | ConvertTo-Json'
]
elif system == "Linux":
# Linux 系统
cmd = ['lpstat', '-o']
elif system == "Darwin": # macOS
cmd = ['lpstat', '-o']
else:
raise NotImplementedError(f"系统 {system} 不受支持")
result = subprocess.run(cmd, capture_output=True, text=True)
if system == "Windows":
# 解析 JSON
try:
jobs = json.loads(result.stdout)
if isinstance(jobs, list):
for job in jobs:
print(f"Document: {job['Document']}, Status: {job['Status']}")
except:
print("没有打印任务")
else:
print(result.stdout)
# 使用示例
get_print_jobs_cross_platform()
实时监控打印任务(完整示例)
import time
import os
import sys
from datetime import datetime
def monitor_print_jobs_windows():
"""Windows 打印任务实时监控"""
try:
while True:
os.system('cls') # 清屏
# 获取打印任务
cmd = 'powershell "Get-WmiObject Win32_PrintJob | Select-Object Document,Owner,Status,TotalPages | Format-Table -AutoSize"'
result = subprocess.run(cmd, capture_output=True, text=True)
print(f"打印队列监控 - {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
print("=" * 60)
print(result.stdout)
time.sleep(5) # 每5秒刷新一次
except KeyboardInterrupt:
print("\n监控已停止")
# 执行监控
monitor_print_jobs_windows()
注意事项
- 权限问题:可能需要管理员权限
- 延迟:打印任务信息可能有几秒延迟
- 打印机驱动:不同厂商打印机可能有额外特殊命令
- 安全考虑:某些信息可能涉及用户隐私
需要我详细演示某个特定平台的方法吗?
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播