Delen via


Achtergrondtaken

Cmdlets kunnen hun actie intern uitvoeren of als een Windows PowerShell-achtergrondtaak. Wanneer een cmdlet wordt uitgevoerd als achtergrondtaak, wordt het werk asynchroon uitgevoerd in een eigen thread, gescheiden van de pijplijnthread die door de cmdlet wordt gebruikt. Wanneer een cmdlet als achtergrondtaak wordt uitgevoerd, retourneert de opdrachtprompt onmiddellijk, zelfs als de taak langere tijd nodig heeft om te voltooien en kan de gebruiker zonder onderbreking doorgaan terwijl de taak wordt uitgevoerd.

Achtergrondtaken, onderliggende taken en de taakopslagplaats

Het taakobject dat wordt geretourneerd door de cmdlets die achtergrondtaken ondersteunen, definieert de taak. (De cmdlet Start-Job retourneert ook een taakobject.) De naam van de taak, een id die wordt gebruikt om de taak, de statusgegevens en de onderliggende taken op te geven, worden in deze definitie opgenomen. De taak voert geen werk uit. Elke achtergrondtaak heeft ten minste één onderliggende taak omdat de onderliggende taak de werkelijke hoeveelheid werk uitvoert. Wanneer u een cmdlet uitvoert zodat het werk wordt uitgevoerd als achtergrondtaak, moet de cmdlet de taak en de onderliggende taken toevoegen aan een gemeenschappelijke opslagplaats, aangeduid als de taakopslagplaats.

Zie het volgende voor meer informatie over hoe achtergrondtaken worden verwerkt op de opdrachtregel:

Een cmdlet schrijven die wordt uitgevoerd als achtergrondtaak

Als u een cmdlet wilt schrijven die als achtergrondtaak kan worden uitgevoerd, moet u de volgende taken uitvoeren:

  • Definieer een asJob switchparameter, zodat de gebruiker kan bepalen of de cmdlet moet worden uitgevoerd als achtergrondtaak.

  • Maak een object dat is afgeleid van de klasse System.Management.Automation. Job. Dit object kan een aangepast taakobject of een taakobject zijn dat wordt geleverd door Windows PowerShell, zoals een System.Management.Automation.PSEventJob-object.

  • Voeg in een recordverwerkingsmethode een if instructie toe waarmee wordt gedetecteerd of de cmdlet moet worden uitgevoerd als achtergrondtaak.

  • Implementeer de taakklasse voor aangepaste taakobjecten.

  • Retourneer de juiste objecten, afhankelijk van of de cmdlet wordt uitgevoerd als achtergrondtaak.

Zie Ondersteuningstakenvoor een codevoorbeeld.

De volgende API's worden geleverd door Windows PowerShell voor het beheren van achtergrondtaken.

System.Management.Automation.Job Aangepaste taakobjecten afleiden. Dit is een abstracte klasse.

System.Management.Automation.JobRepository Beheert en biedt informatie over de huidige actieve achtergrondtaken.

System.Management.Automation.JobState Definieert de status van de achtergrondtaak. Statussen zijn gestart, actief en gestopt.

System.Management.Automation.JobStateInfo Biedt informatie over de status van een achtergrondtaak en, als de laatste statuswijziging is veroorzaakt door een fout, de reden waarom de taak de huidige status heeft ingevoerd.

System.Management.Automation.JobStateEventArgs Geeft de argumenten voor een gebeurtenis die wordt gegenereerd wanneer de status van een achtergrondtaak wordt gewijzigd.

Windows PowerShell-taak-cmdlets

De volgende cmdlets worden geleverd door Windows PowerShell voor het beheren van achtergrondtaken.

Get-Job

Hiermee haalt u Windows PowerShell-achtergrondtaken op die in de huidige sessie worden uitgevoerd.

Taak ontvangen

Hiermee haalt u de resultaten op van de Windows PowerShell-achtergrondtaken in de huidige sessie.

Verwijder

Hiermee verwijdert u een Windows PowerShell-achtergrondtaak.

Start-Taak

Hiermee start u een Windows PowerShell-achtergrondtaak.

Stop-Taak

Hiermee stopt u een Windows PowerShell-achtergrondtaak.

Wachttaak

Onderdrukt de opdrachtprompt totdat een of alle Windows PowerShell-achtergrondtaken die in de sessie worden uitgevoerd, zijn voltooid.

Zie ook

Een Windows PowerShell-cmdlet schrijven