欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PowerShell查询和删除打印任务操作代码实例

程序员文章站 2022-03-14 08:07:42
适用于windows 8.1或server 2012 r2 windows 8.1 和 server 2012 r2上自带了一个powershell组件:“printma...

适用于windows 8.1或server 2012 r2

windows 8.1 和 server 2012 r2上自带了一个powershell组件:“printmanagement“,它包含了所有管理本机和远程打印机的命令。

在之前的小技巧中,我们演示了如何读取打印机任务。每一个打印任务都有一个属性jobstatus ,用来表示该任务是否打印成功。

所有的状态可以这样获取:

复制代码 代码如下:

ps> import-module printmanagement
 
ps> [microsoft.powershell.cmdletization.generatedtypes.printjob.jobstatus]::getnames([microsoft.powershell.cmdletization.generatedtypes.printjob.jobstatus])
normal
paused
error
deleting
spooling
printing
offline
paperout
printed
deleted
blocked
userintervention
restarted
complete
retained
renderinglocally

接下来就可以过滤已存在的任务了。比如你想列出打印任务是否已经完成,或者遇到了故障:

复制代码 代码如下:

$computername = $env:computername
 
get-printer -computername $computername |  foreach-object {
  get-printjob -printername $_.name -computername $computername |
    where-object { $_.jobstatus -eq 'complete' -or $_.jobstatus -eq 'error' -or $_.jobstatus -eq 'printed'}
 }

删除打印任务也非常简单,remove-printjob即可:

复制代码 代码如下:

$computername = $env:computername
 
get-printer -computername $computername |  foreach-object {
  get-printjob -printername $_.name -computername $computername |
    where-object { $_.jobstatus -eq 'complete' -or $_.jobstatus -eq 'error' -or $_.jobstatus -eq 'printed'}
 } |
 remove-printjob -cimsession $computername