我正在制作一个脚本来管理服务器的所有打印作业,到目前为止,我设法删除了具有"完整"的作业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"
}
}
这样,您首先检查是否有旧的打印作业,然后停止每个旧的打印作业。