用一小时的“时间生命”删除打印作业的脚本

问题描述 投票:0回答:2

我正在制作一个脚本来管理服务器的所有打印作业,到目前为止我设法只擦除状态为“完成”的作业,我添加了一个if,如果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"
}
powershell
2个回答
0
投票

我想你需要格式化你的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"
}

0
投票

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

$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"
  }
}

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

© www.soinside.com 2019 - 2024. All rights reserved.