Udostępnij za pomocą


Zadania w tle

Polecenia cmdlet mogą wykonywać akcję wewnętrznie lub jako zadanie programu Windows PowerShellw tle. Gdy polecenie cmdlet jest uruchamiane jako zadanie w tle, praca jest wykonywana asynchronicznie we własnym wątku niezależnie od wątku potoku używanego przez polecenie cmdlet. Z punktu widzenia użytkownika, gdy polecenie cmdlet jest uruchamiane jako zadanie w tle, wiersz polecenia zwraca natychmiast, nawet jeśli zadanie zajmuje dłuższy czas, a użytkownik może kontynuować bez przerwy podczas uruchamiania zadania.

Zadania w tle, zadania podrzędne i repozytorium zadań

Obiekt zadania zwracany przez polecenia cmdlet obsługujące zadania w tle definiuje zadanie. (Polecenie cmdlet start-job zwraca również obiekt zadania). Nazwa zadania, identyfikator używany do określania zadania, informacje o stanie i zadania podrzędne są uwzględnione w tej definicji. Zadanie nie wykonuje żadnej pracy. Każde zadanie w tle ma co najmniej jedno zadanie podrzędne, ponieważ zadanie podrzędne wykonuje rzeczywistą pracę. Po uruchomieniu polecenia cmdlet w celu wykonania pracy jako zadania w tle polecenie cmdlet musi dodać zadanie i zadania podrzędne do wspólnego repozytorium, nazywane repozytorium zadań .

Aby uzyskać więcej informacji na temat obsługi zadań w tle w wierszu polecenia, zobacz następujące tematy:

Pisanie polecenia cmdlet uruchamianego jako zadanie w tle

Aby napisać polecenie cmdlet, które można uruchomić jako zadanie w tle, należy wykonać następujące zadania:

  • Zdefiniuj parametr przełącznika asJob, aby użytkownik mógł zdecydować, czy uruchomić polecenie cmdlet jako zadanie w tle.

  • Utwórz obiekt pochodzący z klasy System.Management.Automation.Job. Ten obiekt może być obiektem zadania niestandardowego lub obiektem zadania dostarczonym przez program Windows PowerShell, taki jak obiekt System.Management.Automation.PSEventJob.

  • W metodzie przetwarzania rekordów dodaj instrukcję if, która wykrywa, czy polecenie cmdlet powinno być uruchamiane jako zadanie w tle.

  • W przypadku obiektów zadań niestandardowych zaimplementuj klasę zadań.

  • Zwróć odpowiednie obiekty, w zależności od tego, czy polecenie cmdlet jest uruchamiane jako zadanie w tle.

Aby zapoznać się z przykładem kodu, zobacz How to Support Jobs.

Następujące interfejsy API są udostępniane przez program Windows PowerShell do zarządzania zadaniami w tle.

System.Management.Automation.Job Pochodne niestandardowe obiekty zadań. Jest to abstrakcyjna klasa.

System.Management.Automation.JobRepository Zarządza i udostępnia informacje o bieżących aktywnych zadaniach w tle.

System.Management.Automation.JobState Definiuje stan zadania w tle. Stany obejmują uruchomione, uruchomione i zatrzymane.

System.Management.Automation.JobStateInfo Zawiera informacje o stanie zadania w tle i, jeśli ostatnia zmiana stanu została spowodowana błędem, przyczyną wprowadzenia bieżącego stanu zadania.

System.Management.Automation.JobStateEventArgs Zawiera argumenty zdarzenia zgłaszanego podczas zmiany stanu zadania w tle.

Polecenia cmdlet zadań programu Windows PowerShell

Następujące polecenia cmdlet są udostępniane przez program Windows PowerShell do zarządzania zadaniami w tle.

Get-Job

Pobiera zadania w tle programu Windows PowerShell uruchomione w bieżącej sesji.

Odbierz-Zadanie

Pobiera wyniki zadań w tle programu Windows PowerShell w bieżącej sesji.

Usuń-Zadanie

Usuwa zadanie w tle programu Windows PowerShell.

Start-Job

Uruchamia zadanie w tle programu Windows PowerShell.

Zatrzymaj-Zadanie

Zatrzymuje zadanie w tle programu Windows PowerShell.

czekaj-zadanie

Pomija wiersz polecenia do momentu ukończenia jednego lub wszystkich zadań w tle programu Windows PowerShell uruchomionych w sesji.

Zobacz też

pisanie polecenia cmdlet programu Windows PowerShell