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 przekazanie obiektu zadania do Stop-Job
elementu .
Można użyć Stop-Job
polecenia , aby zatrzymać zadania w tle, takie jak te, które zostały uruchomione przy użyciu polecenia cmdlet lub parametru Start-Job
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. Żadne nowe zadania nie są dodawane do kolejki po przesłaniu tego polecenia.
To polecenie cmdlet nie usuwa zadań w tle. Aby usunąć zadanie, użyj Remove-Job
polecenia cmdlet .
Począwszy od Windows PowerShell 3.0, Stop-Job
zatrzymuje również 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 niestandardowy typ zadania do sesji przed uruchomieniem Stop-Job
polecenia za pomocą polecenia cmdlet lub za pomocą Import-Module
polecenia cmdlet lub uzyskania polecenia cmdlet w module. Aby uzyskać informacje o określonym niestandardowym typie 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 za pomocą Stop-Job
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ć Stop-Job
polecenie, należy użyć innego Invoke-Command
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 uruchamiania Stop-Job
polecenia w programie PSSession na serwerze Server01. Ponieważ obiekty zadania są przechowywane w $j
obiekcie , który 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 przy użyciu , zobacz about_Remote_Variables.
Po zakończeniu polecenia zadanie zostanie zatrzymane, a narzędzie PSSession w $s
programie jest dostępne 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 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 instanceID.
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 polecenia z parametrem Stop-Job
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 za pomocą Stop-Job
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 do przekierowania 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
Monituje o potwierdzenie przed uruchomieniem polecenia cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 to wartości właściwości zadania.
Ten parametr działa tylko w przypadku niestandardowych typów zadań, takich jak WorkflowJobs i ScheduledJobs. Nie działa on 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 Windows PowerShell 3.0.
Type: | Hashtable |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | 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ć identyfikator wystąpienia, ale jest on unikatowy tylko w bieżącej sesji. Możesz wpisać jeden lub więcej identyfikatorów rozdzielonych przecinkami. Aby znaleźć identyfikator zadania, wpisz Get-Job
.
Type: | Int32[] |
Position: | 0 |
Default value: | All jobs |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-InstanceId
Określa identyfikatory wystąpień zadań, które to polecenie cmdlet zatrzymuje. 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
.
Type: | Guid[] |
Position: | 0 |
Default value: | All jobs |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Job
Określa zadania, które to polecenie cmdlet zatrzymuje. Wprowadź zmienną zawierającą zadania lub polecenie, które pobiera zadania. Możesz również użyć operatora potoku do przesyłania zadań do Stop-Job
polecenia cmdlet. Domyślnie Stop-Job
usuwa wszystkie zadania uruchomione w bieżącej sesji.
Type: | Job[] |
Position: | 0 |
Default value: | All jobs |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Name
Określa przyjazne nazwy zadań, które to polecenie cmdlet zatrzymuje. 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.
Type: | String[] |
Position: | 0 |
Default value: | All jobs |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-PassThru
Zwraca obiekt reprezentujący element, z którym pracujesz. Domyślnie to polecenie cmdlet nie generuje żadnego wyniku.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-State
Określa stan zadania. To polecenie cmdlet zatrzymuje tylko zadania w określonym stanie. Dopuszczalne wartości dla 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 Enumeration (Wyliczenie JobState).
Type: | JobState |
Accepted values: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
Position: | 0 |
Default value: | All jobs |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-WhatIf
Pokazuje, co się stanie po uruchomieniu polecenia cmdlet. Polecenie cmdlet nie zostało uruchomione.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
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.