Remove-Job
Usuwa zadanie w tle programu PowerShell.
Składnia
Remove-Job
[-Force]
[-Id] <Int32[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Job] <Job[]>
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Force]
[-Name] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Force]
[-InstanceId] <Guid[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Force]
[-Filter] <Hashtable>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-State] <JobState>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Command <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Opis
Polecenie cmdlet Remove-Job
usuwa zadania w tle programu PowerShell, które zostały uruchomione przez polecenie cmdlet Start-Job
lub polecenia cmdlet, takie jak Invoke-Command
, które obsługują parametr AsJob.
Możesz użyć Remove-Job
, aby usunąć wszystkie zadania lub usunąć wybrane zadania. Zadania są identyfikowane przez nazwę , ID , ID wystąpienia , polecenie lub stan . Można też wysłać obiekt zadania w dół potoku do Remove-Job
. Bez parametrów lub wartości parametrów Remove-Job
nie wywołuje żadnego efektu.
Od wersji programu PowerShell 3.0, Remove-Job
może usuwać niestandardowe typy zadań, takie jak zadania zaplanowane i przepływy pracy. Na przykład Remove-Job
usuwa zaplanowane zadanie, wszystkie wystąpienia zaplanowanego zadania na dysku oraz wyniki wszystkich wyzwolonych wystąpień zadań.
Jeśli spróbujesz usunąć uruchomione zadanie, niepowodzeniem zakończy się operacja Remove-Job
. Aby zatrzymać uruchomione zadanie, użyj polecenia cmdlet Stop-Job
. Możesz też użyć Remove-Job
z parametrem Force, aby usunąć uruchomione zadanie.
Zadania pozostają w globalnej pamięci podręcznej zadań do momentu usunięcia zadania w tle lub zamknięcia sesji programu PowerShell.
Przykłady
Przykład 1. Usuwanie zadania przy użyciu jego nazwy
W tym przykładzie użyto zmiennej i potoku do usunięcia zadania według nazwy.
$batch = Get-Job -Name BatchJob
$batch | Remove-Job
Get-Job
używa parametru Name w celu określenia zadania BatchJob. Obiekt zadania jest przechowywany w zmiennej $batch
. Obiekt w $batch
jest wysyłany wzdłuż potoku do Remove-Job
.
Alternatywą jest użycie parametru Job, na przykład Remove-Job -Job $batch
.
Przykład 2: Usuwanie wszystkich zadań w sesji
W tym przykładzie wszystkie zadania w bieżącej sesji programu PowerShell zostaną usunięte.
Get-Job | Remove-Job
Get-Job
uzyskuje wszystkie zadania w bieżącej sesji programu PowerShell. Obiekty zadań są wysyłane w dół potoku do Remove-Job
.
Przykład 3. Usuwanie niestartowanych zadań
Ten przykład usuwa wszystkie zadania z bieżącej sesji programu PowerShell, które nie zostały uruchomione.
Remove-Job -State NotStarted
Remove-Job
używa parametru stanu w celu określenia stanu zadania.
Przykład 4. Usuwanie zadań przy użyciu przyjaznej nazwy
W tym przykładzie wszystkie zadania z bieżącej sesji, które mają przyjazne nazwy kończące się na partię , są usuwane, w tym również te, które są uruchomione.
Remove-Job -Name *batch -Force
Remove-Job
używa parametru Name, aby określić wzorzec nazwy zadania. Wzorzec zawiera symbol wieloznaczny gwiazdki (*
), aby znaleźć wszystkie nazwy zadań kończące się na partię . Parametr Force usuwa uruchomione zadania.
Przykład 5. Usuwanie zadania utworzonego przez Invoke-Command
W tym przykładzie usunięto zadanie uruchomione na komputerze zdalnym przy użyciu Invoke-Command
z parametrem AsJob.
Ponieważ w przykładzie użyto parametru AsJob, obiekt zadania jest tworzony na komputerze lokalnym. Jednak zadanie jest uruchamiane na komputerze zdalnym. W związku z tym polecenia lokalne służą do zarządzania zadaniem.
$job = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Process} -AsJob
$job | Remove-Job
Invoke-Command
uruchamia zadanie na komputerze Server01. Parametr AsJob uruchamia ScriptBlock jako zadanie w tle. Obiekt zadania jest przechowywany w zmiennej $job
. Obiekt zmiennej $job
jest wysyłany w dół potoku do Remove-Job
.
Przykład 6. Usuwanie zadania utworzonego przez Invoke-Command i Start-Job
W tym przykładzie pokazano, jak usunąć zadanie na komputerze zdalnym, które zostało uruchomione przy użyciu Invoke-Command
do uruchomienia Start-Job
. Obiekt zadania jest tworzony na komputerze zdalnym, a polecenia zdalne są używane do zarządzania zadaniem. Trwałe połączenie jest wymagane podczas uruchamiania zdalnego polecenia Start-Job
.
$S = New-PSSession -ComputerName Server01
Invoke-Command -Session $S -ScriptBlock {Start-Job -ScriptBlock {Get-Process} -Name MyJob}
Invoke-Command -Session $S -ScriptBlock {Remove-Job -Name MyJob}
New-PSSession
tworzy PSSession, trwałe połączenie z komputerem Server01. Połączenie jest zapisywane w zmiennej $S
.
Invoke-Command
nawiązuje połączenie z sesją zapisaną w $S
.
ScriptBlock używa Start-Job
do uruchamiania zadania zdalnego. Zadanie uruchamia polecenie Get-Process
i używa parametru nazwa , aby określić przyjazną nazwę zadania MyJob.
Invoke-Command
używa sesji $S
i uruchamia Remove-Job
. Parametr Nazwa określa, że zadanie o nazwie MyJob zostało usunięte.
Przykład 7. Usuwanie zadania przy użyciu identyfikatora InstanceId
Ten przykład usuwa zadanie na podstawie InstanceId.
$job = Start-Job -ScriptBlock {Get-Process PowerShell}
$job | Format-List -Property *
Remove-Job -InstanceId ad02b942-8007-4407-87f3-d23e71955872
State : Completed
HasMoreData : True
StatusMessage :
Location : localhost
Command : Get-Process PowerShell
JobStateInfo : Completed
Finished : System.Threading.ManualResetEvent
InstanceId : ad02b942-8007-4407-87f3-d23e71955872
Id : 3
Name : Job3
ChildJobs : {Job4}
PSBeginTime : 7/26/2019 11:36:56
PSEndTime : 7/26/2019 11:36:57
PSJobTypeName : BackgroundJob
Output : {}
Error : {}
Progress : {}
Verbose : {}
Debug : {}
Warning : {}
Information : {}
Start-Job
uruchamia zadanie w tle, a obiekt zadania jest zapisywany w zmiennej $job
.
Obiekt w $job
jest wysyłany wzdłuż potoku do Format-List
. Parametr Property używa gwiazdki (*
), aby określić, że wszystkie właściwości obiektu są wyświetlane na liście.
Remove-Job
używa parametru InstanceId w celu określenia zadania do usunięcia.
Parametry
-Command
Usuwa zadania, które zawierają określone wyrazy w poleceniu. Można wprowadzić tablicę rozdzielaną przecinkami.
Typ: | String[] |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-Confirm
Wyświetla komunikat z prośbą o potwierdzenie przed uruchomieniem Remove-Job
.
Typ: | SwitchParameter |
Aliasy: | cf |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Filter
Usuwa zadania spełniające wszystkie warunki określone w skojarzonej tabeli skrótów. 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 Start-Job
.
Ten parametr jest wprowadzany w programie PowerShell 3.0.
Typ: | Hashtable |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-Force
Usuwa zadanie, nawet jeśli stan zadania jest Uruchomiono. Jeśli parametr Force nie jest określony, Remove-Job
nie usuwa uruchomionych zadań.
Typ: | SwitchParameter |
Aliasy: | F |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Id
Usuwa procesy w tle z określonym Id . Można wprowadzić listę rozdzielaną przecinkami. Identyfikator zadania jest unikatową liczbą całkowitą identyfikującą zadanie w bieżącej sesji.
Aby znaleźć identyfikator zadania, użyj Get-Job
bez parametrów.
Typ: | Int32[] |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-InstanceId
Usuwa prace z określonym identyfikatorem wystąpienia . Można wprowadzić tablicę rozdzielaną przecinkami. InstanceId jest unikatowym identyfikatorem GUID identyfikującym zadanie.
Aby znaleźć InstanceId zadania, użyj Get-Job
.
Typ: | Guid[] |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-Job
Określa zadania do usunięcia. Wprowadź zmienną zawierającą zadania lub polecenie, które pobiera zadania. Można wprowadzić tablicę rozdzielaną przecinkami.
Obiekty zadań można wysyłać w dół potoku do Remove-Job
.
Typ: | Job[] |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-Name
Usuwa tylko zadania o określonej przyjaznej nazwie. Dozwolone są symbole wieloznaczne. Można wprowadzić tablicę rozdzielaną przecinkami.
Przyjazne nazwy zadań nie mają gwarancji, że są unikatowe, nawet w ramach sesji programu PowerShell. Użyj parametrów WhatIf i Confirm podczas usuwania plików według nazwy.
Typ: | String[] |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | True |
-State
Usuwa tylko zadania o określonym stanie. Aby usunąć zadania ze stanem Running, użyj parametru Force.
Zaakceptowane wartości:
- Punkt przerwania
- Zablokowany
- Zakończone
- Odłączony
- Nie powiodło się
- Nie rozpoczęto
- Bieganie
- Zatrzymany
- Zatrzymanie
- Zawieszony
- Zawieszenie
Typ: | JobState |
Dopuszczalne wartości: | AtBreakpoint, Blocked, Completed, Disconnected, Failed, NotStarted, Running, Stopped, Stopping, Suspended, Suspending |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-WhatIf
Pokazuje, co się stanie, jeśli Remove-Job
się uruchomi. Cmdlet nie został uruchomiony.
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
Do tego polecenia cmdlet można przekierować obiekt zadania .
Dane wyjściowe
None
To polecenie cmdlet nie zwraca żadnych danych wyjściowych.
Uwagi
Program PowerShell zawiera następujące aliasy dla Remove-Job
:
- Wszystkie platformy:
rjb
Zadanie programu PowerShell tworzy nowy proces. Po zakończeniu zadania proces kończy się. Po uruchomieniu Remove-Job
stan zadania zostanie usunięty.
Jeśli zadanie zostanie zatrzymane przed zakończeniem i jego proces nie zostanie zakończony, proces zostanie przymusowo zakończony.