用于删除打印作业的脚本,"time life"时间超过一小时



我正在制作一个脚本来管理服务器的所有打印作业,到目前为止,我设法删除了具有"完整"的作业printjob的情况大于1小时,脚本应删除作业。

我不太确定它的工作,它似乎可以删除所有内容,所以我不确定我在哪里失败,加上脚本始终会遇到其他条件。

$nombre = hostname
$old = (Get-Date).AddHours(-1)
Write-Host $nombre
if (Get-Printer -ComputerName $nombre  | Get-Printjob | where {$_.timesubmitted -lt $old -and $_.JobStatus -match "Complete" -and $_.JobStatus -notmatch "Spooling"} | Remove-PrintJob){ 
      Write-Host "Eliminados los trabajos completados mas antiguos de una hora" } 
else { 
      Write-Host "No se han encontrado trabajos que coincidan con los parametros"
}

我认为您需要格式化if条件。尝试这个 -

if (Get-Printer -ComputerName $nombre)
{
    get-printjob | where {$_.timesubmitted -lt $old -and $_.JobStatus -match "Complete" -and $_.JobStatus -notmatch "Spooling"} | Remove-PrintJob
    Write-Host "Eliminados los trabajos completados mas antiguos de una hora"
}
else
    Write-Host "No se han encontrado trabajos que coincidan con los parametros"
}

我认为它应该看起来更像:

$nombre = hostname
$old = (Get-Date).AddHours(-1)
Write-Host $nombre
$Printjobs = Get-Printer -ComputerName $nombre  | Get-Printjob | where {$_.timesubmitted -lt $old -and $_.JobStatus -match "Complete" -and $_.JobStatus -notmatch "Spooling"}
if($Printjobs){
  foreach($job in $PrintJob)
  {
    Remove-PrintJob $job
    Write-Host "Eliminados los trabajos completados mas antiguos de una hora"
  } 
  else{ 
      Write-Host "No se han encontrado trabajos que coincidan con los parametros"
  }
}

这样,您首先检查是否有旧的打印作业,然后停止每个旧的打印作业。

最新更新