2017-12-19 11 views
0

これまでサーバーのすべてのプリントジョブを管理するためのスクリプトを作成していましたが、これまでステータス「完了」のジョブのみを消去できました。 printjobが1時間以上経過した場合にスクリプトがジョブを削除する必要があるifを追加しました。1時間以上の「寿命」のあるプリントジョブを削除するスクリプト

私は本当にこれが働いているとは思えません。それはすべて消去されているようですので、どこで失敗しているのか分かりませんし、スクリプトも常にelse条件になります。

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

答えて

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

あなたが最初にすべての古い印刷ジョブがあるかどうかを確認して、すべての古いものを停止し、この道を。

関連する問題