2009-09-08 8 views
4

Existe-t-il un moyen pour un travail PowerShell de signaler une progression ou de déclencher des événements avant qu'il ne soit terminé? Je viens de commencer à jouer avec des jobs d'arrière-plan dans PowerShell et je me demande jusqu'où je peux pousser la capacité.Surveillance de l'avancement des travaux PowerShell

Répondre

10

La méthode "manuelle" standard consiste à utiliser la cmdlet Get-Job. En ce qui concerne les événements, lorsque vous créez un emploi avec Start-Job, l'objet du travail renvoyé a donc un événement « StateChanged » sur elle, vous pouvez vous abonner à par exemple:

$job = Start-Job { Get-Process; Start-Sleep -seconds 60 } 
Register-ObjectEvent $job -EventName StateChanged ` 
    -SourceIdentifier JobStateChanged ` 
    -Action { Write-Host "Job $($Sender.Id) $($Sender.JobStateInfo)" } 
2

Vous pouvez également augmenter vos propres événements personnalisés à partir d'un travail local ou à distance et agir sur eux dans la session locale.

+0

Mettez à jour cette réponse avec un lien approprié lorsqu'il est posté –