Udostępnij za pośrednictwem


Stop-Job

Zatrzymuje zadanie w tle programu PowerShell.

Składnia

Stop-Job
    [-PassThru]
    [-Id] <Int32[]>
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Stop-Job
    [-Job] <Job[]>
    [-PassThru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Stop-Job
    [-PassThru]
    [-Name] <String[]>
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Stop-Job
    [-PassThru]
    [-InstanceId] <Guid[]>
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Stop-Job
    [-PassThru]
    [-State] <JobState>
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Stop-Job
    [-PassThru]
    [-Filter] <Hashtable>
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Opis

Polecenie Stop-Job cmdlet zatrzymuje zadania w tle programu PowerShell, które są w toku. To polecenie cmdlet umożliwia zatrzymanie wszystkich zadań lub zatrzymanie wybranych zadań na podstawie ich nazwy, identyfikatora, identyfikatora wystąpienia lub stanu albo przekazania obiektu zadania do Stop-Job.

Można użyć Stop-Job polecenia , aby zatrzymać zadania w tle, takie jak te, które zostały uruchomione przy użyciu Start-Job polecenia cmdlet lub parametru AsJob dowolnego polecenia cmdlet. Po zatrzymaniu zadania w tle program PowerShell wykonuje wszystkie zadania oczekujące w tej kolejce zadań, a następnie kończy zadanie. Po przesłaniu tego polecenia żadne nowe zadania nie są dodawane do kolejki.

To polecenie cmdlet nie usuwa zadań w tle. Aby usunąć zadanie, użyj Remove-Job polecenia cmdlet .

Począwszy od programu Windows PowerShell 3.0, Stop-Job również zatrzymuje niestandardowe typy zadań, takie jak WorkflowJobs i wystąpienia zadań ScheduledJobs. Aby umożliwić Stop-Job zatrzymanie zadania z niestandardowym typem zadania, zaimportuj moduł obsługujący typ zadania niestandardowego do sesji przed uruchomieniem Stop-Job polecenia przy użyciu Import-Module polecenia cmdlet lub polecenia cmdlet w module. Aby uzyskać informacje na temat określonego niestandardowego typu zadania, zobacz dokumentację funkcji niestandardowego typu zadania.

Przykłady

Przykład 1: Zatrzymywanie zadania na komputerze zdalnym za pomocą polecenia Invoke-Command

$s = New-PSSession -ComputerName Server01 -Credential Domain01\Admin02
$j = Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {Get-EventLog -LogName System}}
Invoke-Command -Session $s -ScriptBlock { Stop-job -Job $Using:j }

W tym przykładzie Stop-Job pokazano, jak za pomocą polecenia cmdlet zatrzymać zadanie uruchomione na komputerze zdalnym.

Ponieważ zadanie zostało uruchomione z Invoke-Command poleceniem Start-Job cmdlet w celu zdalnego uruchomienia polecenia, obiekt zadania jest przechowywany na komputerze zdalnym. Aby zdalnie uruchomić polecenie, należy użyć innego Invoke-Command Stop-Job polecenia. Aby uzyskać więcej informacji na temat zdalnych zadań w tle, zobacz about_Remote_Jobs.

Pierwsze polecenie tworzy sesję programu PowerShell (PSSession) na komputerze Server01, a następnie przechowuje obiekt sesji w zmiennej $s . Polecenie używa poświadczeń administratora domeny.

Drugie polecenie używa Invoke-Command polecenia cmdlet do uruchomienia Start-Job polecenia w sesji. Polecenie w zadaniu pobiera wszystkie zdarzenia w dzienniku zdarzeń systemu. Wynikowy obiekt zadania jest przechowywany w zmiennej $j .

Trzecie polecenie zatrzymuje zadanie. Używa Invoke-Command polecenia cmdlet do uruchomienia Stop-Job polecenia w programie PSSession na serwerze Server01. Ponieważ obiekty zadania są przechowywane w $jobiekcie , który jest zmienną na komputerze lokalnym, polecenie używa modyfikatora używającego zakresu do identyfikacji $j jako zmiennej lokalnej. Aby uzyskać więcej informacji na temat modyfikatora zakresu, zobacz about_Remote_Variables.

Po zakończeniu polecenia zadanie zostanie zatrzymane, a program PSSession w $s programie jest dostępny do użycia.

Przykład 2. Zatrzymywanie zadania w tle

Stop-Job -Name "Job1"

To polecenie zatrzymuje Job1 zadanie w tle.

Przykład 3. Zatrzymywanie kilku zadań w tle

Stop-Job -Id 1, 3, 4

To polecenie zatrzymuje trzy zadania. Identyfikuje je przy użyciu ich identyfikatorów.

Przykład 4. Zatrzymywanie wszystkich zadań w tle

Get-Job | Stop-Job

To polecenie zatrzymuje wszystkie zadania w tle w bieżącej sesji.

Przykład 5. Zatrzymanie wszystkich zablokowanych zadań w tle

Stop-Job -State Blocked

To polecenie zatrzymuje wszystkie zablokowane zadania.

Przykład 6. Zatrzymywanie zadania według identyfikatora wystąpienia

Get-Job | Format-Table ID, Name, Command, @{Label="State";Expression={$_.JobStateInfo.State}},
InstanceID -Auto

Id Name Command                 State  InstanceId
-- ---- -------                 -----  ----------
1 Job1 start-service schedule Running 05abb67a-2932-4bd5-b331-c0254b8d9146
3 Job3 start-service schedule Running c03cbd45-19f3-4558-ba94-ebe41b68ad03
5 Job5 get-service s*         Blocked e3bbfed1-9c53-401a-a2c3-a8db34336adf

Stop-Job -InstanceId e3bbfed1-9c53-401a-a2c3-a8db34336adf

Te polecenia pokazują, jak zatrzymać zadanie na podstawie identyfikatora wystąpienia.

Pierwsze polecenie używa Get-Job polecenia cmdlet do pobrania zadań w bieżącej sesji. Polecenie używa operatora potoku (|) do wysyłania zadań do Format-Table polecenia, które wyświetla tabelę określonych właściwości każdego zadania. Tabela zawiera identyfikator instanceID każdego zadania. Używa właściwości obliczeniowej do wyświetlania stanu zadania.

Drugie polecenie używa Stop-Job polecenia, które ma parametr InstanceID , aby zatrzymać wybrane zadanie.

Przykład 7. Zatrzymywanie zadania na komputerze zdalnym

$j = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-EventLog -LogName System} -AsJob
$j | Stop-Job -PassThru

Id    Name    State      HasMoreData     Location         Command
--    ----    ----       -----------     --------         -------
5     Job5    Stopped    True            user01-tablet    Get-EventLog -LogName Sy...

W tym przykładzie Stop-Job pokazano, jak za pomocą polecenia cmdlet zatrzymać zadanie uruchomione na komputerze zdalnym.

Ponieważ zadanie zostało uruchomione z parametrem Invoke-Command AsJob polecenia cmdlet, obiekt Job znajduje się na komputerze lokalnym, mimo że zadanie jest uruchamiane na komputerze zdalnym. W związku z tym można użyć polecenia lokalnego Stop-Job , aby zatrzymać zadanie.

Pierwsze polecenie używa Invoke-Command polecenia cmdlet do uruchomienia zadania w tle na komputerze Server01. Polecenie używa parametru AsJob , aby uruchomić zdalne polecenie jako zadanie w tle.

To polecenie zwraca obiekt zadania, który jest tym samym obiektem zadania, który Start-Job zwraca polecenie cmdlet. Polecenie zapisuje obiekt zadania w zmiennej $j .

Drugie polecenie używa operatora potoku do wysyłania zadania w zmiennej $j do Stop-Job. Polecenie używa parametru PassThru , aby bezpośrednio Stop-Job zwrócić obiekt zadania. Wyświetlany obiekt zadania potwierdza, że stan zadania to Zatrzymano.

Aby uzyskać więcej informacji na temat zdalnych zadań w tle, zobacz about_Remote_Jobs.

Parametry

-Confirm

Monituje o potwierdzenie przed uruchomieniem polecenia cmdlet.

Typ:SwitchParameter
Aliasy:cf
Position:Named
Domyślna wartość:False
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Filter

Określa tabelę skrótów warunków. To polecenie cmdlet zatrzymuje zadania spełniające każdy warunek. Wprowadź tabelę skrótów, w której klucze są właściwościami zadania, a wartości są wartościami właściwości zadania.

Ten parametr działa tylko w przypadku niestandardowych typów zadań, takich jak WorkflowJobs i ScheduledJobs. Nie działa w przypadku standardowych zadań w tle, takich jak te utworzone przy użyciu Start-Job polecenia cmdlet . Aby uzyskać informacje o obsłudze tego parametru, zobacz temat pomocy dla typu zadania.

Ten parametr został wprowadzony w programie Windows PowerShell 3.0.

Typ:Hashtable
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Id

Określa identyfikatory zadań, które zatrzymuje to polecenie cmdlet. Wartość domyślna to wszystkie zadania w bieżącej sesji.

Identyfikator jest liczbą całkowitą, która jednoznacznie identyfikuje zadanie w bieżącej sesji. Łatwiej jest zapamiętać i wpisać niż identyfikator wystąpienia, ale jest on unikatowy tylko w bieżącej sesji. Można wpisać jeden lub więcej identyfikatorów rozdzielonych przecinkami. Aby znaleźć identyfikator zadania, wpisz Get-Job.

Typ:Int32[]
Position:0
Domyślna wartość:All jobs
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-InstanceId

Określa identyfikatory wystąpień zadań, które zatrzymuje to polecenie cmdlet. Wartość domyślna to wszystkie zadania.

Identyfikator wystąpienia to identyfikator GUID, który jednoznacznie identyfikuje zadanie na komputerze. Aby znaleźć identyfikator wystąpienia zadania, użyj polecenia Get-Job.

Typ:Guid[]
Position:0
Domyślna wartość:All jobs
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Job

Określa zadania, które zatrzymuje to polecenie cmdlet. Wprowadź zmienną zawierającą zadania lub polecenie, które pobiera zadania. Możesz również użyć operatora potoku, aby przesłać zadania do Stop-Job polecenia cmdlet. Domyślnie Stop-Job usuwa wszystkie zadania, które zostały uruchomione w bieżącej sesji.

Typ:Job[]
Position:0
Domyślna wartość:All jobs
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Name

Określa przyjazne nazwy zadań, które zatrzymuje to polecenie cmdlet. Wprowadź nazwy zadań na liście rozdzielanej przecinkami lub użyj symboli wieloznacznych (*), aby wprowadzić wzorzec nazwy zadania. Domyślnie Stop-Job zatrzymuje wszystkie zadania utworzone w bieżącej sesji.

Ponieważ przyjazna nazwa nie jest gwarantowana jako unikatowa, użyj parametrów WhatIf i Confirm podczas zatrzymywania zadań według nazwy.

Typ:String[]
Position:0
Domyślna wartość:All jobs
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:True

-PassThru

Zwraca obiekt reprezentujący element, z którym pracujesz. Domyślnie to polecenie cmdlet nie generuje żadnych danych wyjściowych.

Typ:SwitchParameter
Position:Named
Domyślna wartość:False
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-State

Określa stan zadania. To polecenie cmdlet zatrzymuje tylko zadania w określonym stanie. Dopuszczalne wartości tego parametru to:

  • NotStarted
  • Running
  • Completed
  • Failed
  • Stopped
  • Blocked
  • Suspended
  • Disconnected
  • Suspending
  • Stopping

Aby uzyskać więcej informacji na temat stanów zadań, zobacz JobState, wyliczenie.

Typ:JobState
Dopuszczalne wartości:NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint
Position:0
Domyślna wartość:All jobs
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-WhatIf

Pokazuje, co się stanie po uruchomieniu polecenia cmdlet. Polecenie cmdlet nie zostało uruchomione.

Typ:SwitchParameter
Aliasy:wi
Position:Named
Domyślna wartość:False
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

Dane wejściowe

System.Management.Automation.RemotingJob

Do tego polecenia cmdlet można przekazać obiekt zadania.

Dane wyjściowe

None

Domyślnie to polecenie cmdlet nie zwraca żadnych danych wyjściowych.

System.Management.Automation.PSRemotingJob

Jeśli używasz parametru PassThru , to polecenie cmdlet zwraca obiekt zadania.

Uwagi

Program Windows PowerShell zawiera następujące aliasy dla programu Stop-Job:

  • spjb