Zadania w tle

Polecenia cmdlet mogą wykonywać swoje działania wewnętrznie lub Windows PowerShell zadania w tle. Gdy polecenie cmdlet jest uruchamiane jako zadanie w tle, praca jest wykonywana asynchronicznie we własnym wątku oddzielonym od wątku potoku, z którym korzysta polecenie cmdlet. Z perspektywy użytkownika, gdy polecenie cmdlet działa jako zadanie w tle, wiersz polecenia jest zwracany natychmiast, nawet jeśli zadanie zajmuje dłuższy czas, a użytkownik może kontynuować bez zakłóceń podczas jego działania.

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

Obiekt zadania zwracany przez polecenia cmdlet, które obsługują zadania w tle, definiuje zadanie. (Polecenie cmdlet Start-Job zwraca również obiekt zadania). Ta definicja zawiera nazwę zadania, identyfikator używany do określania zadania, informacje o stanie i zadania podrzędne. 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 tak, aby praca odbywała się jako zadanie w tle, polecenie cmdlet musi dodać zadanie i zadania podrzędne do wspólnego repozytorium, nazywanego repozytorium zadań.

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

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, aby użytkownik może zdecydować, czy uruchomić asJob polecenie cmdlet jako zadanie w tle.

  • Utwórz obiekt, który pochodzi od klasy System.Management.Automation.Job. Ten obiekt może być niestandardowym obiektem zadania lub obiektem zadania dostarczanym przez Windows PowerShell, takim jak obiekt System.Management.Automation.Pseventjob.

  • W metodzie przetwarzania rekordów dodaj instrukcje, które wykrywają, czy if polecenie cmdlet powinno być uruchamiane jako zadanie w tle.

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

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

Aby uzyskać przykładowy kod, zobacz How to Support Jobs (Jak obsługiwać zadania).

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

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

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ą Uruchomiona, Uruchomiona i Zatrzymana.

System.Management.Automation.Jobstateinfo zawiera informacje o stanie zadania w tle, a jeśli ostatnia zmiana stanu została spowodowana przez błąd, przyczyna, dla którego zadanie zostało wprowadzone w bieżącym stanie.

System.Management.Automation.Jobstateeventargs Udostępnia argumenty dla zdarzenia, które jest wywoływane, gdy zadanie w tle zmienia stan.

Windows PowerShell Polecenia cmdlet zadań

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

Get-Job

Pobiera Windows PowerShell w tle, które są uruchomione w bieżącej sesji.

Receive-Job

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

Usuń zadanie

Usuwa zadanie Windows PowerShell w tle.

Uruchamianie zadania

Uruchamia zadanie Windows PowerShell w tle.

Zatrzymywanie zadania

Zatrzymuje zadanie Windows PowerShell w tle.

Wait-Job

Pomija wiersz polecenia do momentu ukończenia co najmniej jednego Windows PowerShell zadań w tle uruchomionych w sesji.

Zobacz też

Pisanie polecenia cmdlet programu Windows PowerShell