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).
Interfejsy API Job-Related w tle
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.
Pobiera Windows PowerShell w tle, które są uruchomione w bieżącej sesji.
Pobiera wyniki zadania Windows PowerShell w tle w bieżącej sesji.
Usuwa zadanie Windows PowerShell w tle.
Uruchamia zadanie Windows PowerShell w tle.
Zatrzymuje zadanie Windows PowerShell w tle.
Pomija wiersz polecenia do momentu ukończenia co najmniej jednego Windows PowerShell zadań w tle uruchomionych w sesji.
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla