我正在制作一个脚本来管理服务器的所有打印作业,到目前为止我设法只擦除状态为“完成”的作业,我添加了一个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"
}
我想你需要格式化你的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"
}
}
这样,您首先检查是否有任何旧的打印作业,然后停止每个旧的打印作业。