Udostępnij za pomocą


Stop-Job

Zatrzymuje zadanie w tle programu PowerShell.

Składnia

SessionIdParameterSet (domyślnie)

Stop-Job
    [-Id] <Int32[]>
    [-PassThru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

JobParameterSet

Stop-Job
    [-Job] <Job[]>
    [-PassThru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

NameParameterSet

Stop-Job
    [-Name] <String[]>
    [-PassThru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

InstanceIdParameterSet

Stop-Job
    [-InstanceId] <Guid[]>
    [-PassThru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

StateParameterSet

Stop-Job
    [-State] <JobState>
    [-PassThru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

FilterParameterSet

Stop-Job
    [-Filter] <Hashtable>
    [-PassThru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Opis

Polecenie cmdlet Stop-Job 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 przekazanie obiektu zadania do zatrzymanie zadania.

Można użyć stop-job, aby zatrzymać zadania w tle, takie jak te, które zostały uruchomione przy użyciu polecenia cmdlet Start-Job lub AsJob parametru 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 polecenia cmdlet Remove-Job.

Począwszy od programu Windows PowerShell 3.0, zatrzymywania zadań również zatrzymuje niestandardowe typy zadań, takie jak zadania przepływu pracy i wystąpienia zaplanowanych zadań. Aby włączyć stop-job zatrzymać zadanie z niestandardowym typem zadania, zaimportuj moduł obsługujący niestandardowy typ zadania do sesji przed uruchomieniem polecenia stop-job za pomocą polecenia cmdlet Import-Module lub przy użyciu polecenia cmdlet lub pobierania 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 przy użyciu Invoke-Command

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

W tym przykładzie pokazano, jak użyć polecenia cmdlet Stop-Job, aby zatrzymać zadanie uruchomione na komputerze zdalnym.

Ponieważ zadanie zostało uruchomione za pomocą polecenia cmdlet Invoke-Command w celu zdalnego uruchomienia zadania uruchamiania, obiekt zadania jest przechowywany na komputerze zdalnym. Należy użyć innego polecenia Invoke-Command, aby zdalnie uruchomić polecenie stop-job. 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 zapisuje obiekt sesji w zmiennej $s. Polecenie używa poświadczeń administratora domeny.

Drugie polecenie używa polecenia cmdlet Invoke-Command do uruchamiania 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 on polecenia cmdlet Invoke-Command do uruchomienia polecenia stop-job w PSSession na serwerze Server01. Ponieważ obiekty zadań są przechowywane w $j, która jest zmienną na komputerze lokalnym, polecenie używa modyfikatora używającego zakresu do identyfikowania $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 PSSession w $s jest dostępny do użycia.

Przykład 2. Zatrzymywanie zadania w tle

Stop-Job -Name "Job1"

To polecenie zatrzymuje zadanie w tle Job1.

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 przy użyciu 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 polecenia cmdlet Get-Job, aby pobrać zadania w bieżącej sesji. Polecenie używa operatora potoku (|) do wysyłania zadań do polecenia Format-Table, które wyświetla tabelę określonych właściwości każdego zadania. Tabela zawiera identyfikator wystąpienia każdego zadania. Używa właściwości obliczeniowej do wyświetlania stanu zadania.

Drugie polecenie używa polecenia Stop-Job z parametrem InstanceID, aby zatrzymać wybrane zadanie.

Przykład 7. Zatrzymywanie zadania na komputerze zdalnym

$j = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-EventLog System} -AsJob
$j | Stop-Job -PassThru
Id    Name    State      HasMoreData     Location         Command
--    ----    ----       -----------     --------         -------
5     Job5    Stopped    True            user01-tablet    get-eventlog system

W tym przykładzie pokazano, jak użyć polecenia cmdlet Stop-Job, aby zatrzymać zadanie uruchomione na komputerze zdalnym.

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

Pierwsze polecenie używa polecenia cmdlet Invoke-Command, aby uruchomić zadanie 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 zwraca polecenie cmdlet Start-Job. Polecenie zapisuje obiekt zadania w zmiennej $j.

Drugie polecenie używa operatora potoku do wysyłania zadania w zmiennej $j do polecenia Stop-Job. Polecenie używa parametru PassThru, aby kierować Stop-Job w celu zwrócenia obiektu 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

Prosi o potwierdzenie przed uruchomieniem cmdletu.

Właściwości parametru

Typ:SwitchParameter
Domyślna wartość:False
Obsługuje symbole wieloznaczne:False
DontShow:False
Aliasy:por

Zestawy parametrów

(All)
Position:Named
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-Filter

Określa tabelę skrótów warunków. To polecenie cmdlet zatrzymuje zadania spełniające wszystkie warunki. 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 zadania przepływu pracy i zaplanowane zadania. Nie działa w przypadku standardowych zadań w tle, takich jak te utworzone przy użyciu polecenia cmdlet Start-Job. Aby uzyskać informacje o obsłudze tego parametru, zobacz temat pomocy dla typu zadania.

Ten parametr został wprowadzony w programie Windows PowerShell 3.0.

Właściwości parametru

Typ:Hashtable
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

FilterParameterSet
Position:0
Obowiązkowe:True
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:True
Wartość z pozostałych argumentów: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.

Właściwości parametru

Typ:

Int32[]

Domyślna wartość:All jobs
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

SessionIdParameterSet
Position:0
Obowiązkowe:True
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:True
Wartość z pozostałych argumentów: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.

Właściwości parametru

Typ:

Guid[]

Domyślna wartość:All jobs
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

InstanceIdParameterSet
Position:0
Obowiązkowe:True
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:True
Wartość z pozostałych argumentów: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 polecenia cmdlet Stop-Job. Domyślnie zatrzymanie zadania usuwa wszystkie zadania, które zostały uruchomione w bieżącej sesji.

Właściwości parametru

Typ:

Job[]

Domyślna wartość:All jobs
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

JobParameterSet
Position:0
Obowiązkowe:True
Wartość z potoku:True
Wartość z potoku według nazwy właściwości:True
Wartość z pozostałych argumentów: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 (*) w celu wprowadzenia wzorca nazwy zadania. Domyślnie zatrzymanie zadania zatrzymuje wszystkie zadania utworzone w bieżącej sesji.

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

Właściwości parametru

Typ:

String[]

Domyślna wartość:All jobs
Obsługuje symbole wieloznaczne:True
DontShow:False

Zestawy parametrów

NameParameterSet
Position:0
Obowiązkowe:True
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:True
Wartość z pozostałych argumentów:False

-PassThru

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

Właściwości parametru

Typ:SwitchParameter
Domyślna wartość:False
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:Named
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-State

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

  • Nierozpoczęty
  • Bieganie
  • Zakończone
  • Nie powiodło się
  • Zatrzymano
  • Zablokowany
  • Zawieszony
  • Odłączony
  • Zawieszenie
  • Zatrzymanie

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

Właściwości parametru

Typ:JobState
Domyślna wartość:All jobs
Dopuszczalne wartości:NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

StateParameterSet
Position:0
Obowiązkowe:True
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:True
Wartość z pozostałych argumentów:False

-WhatIf

Pokazuje, co się stanie, jeśli polecenie cmdlet zostanie uruchomione. Cmdlet nie jest uruchomiony.

Właściwości parametru

Typ:SwitchParameter
Domyślna wartość:False
Obsługuje symbole wieloznaczne:False
DontShow:False
Aliasy:Wi

Zestawy parametrów

(All)
Position:Named
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

CommonParameters

To polecenie cmdlet obsługuje typowe parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Aby uzyskać więcej informacji, zobacz about_CommonParameters.

Dane wejściowe

System.Management.Automation.RemotingJob

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

Dane wyjściowe

None, System.Management.Automation.PSRemotingJob

To polecenie cmdlet zwraca obiekt zadania, jeśli określisz parametr PassThru. W przeciwnym razie to polecenie cmdlet nie generuje żadnych danych wyjściowych.