다음을 통해 공유


Remove-Job

PowerShell 백그라운드 작업을 삭제합니다.

Syntax

Remove-Job
      [-Id] <Int32[]>
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Job
      [-Job] <Job[]>
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Job
      [-Name] <String[]>
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Job
      [-Filter] <Hashtable>
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Job
      [-InstanceId] <Guid[]>
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Job
      [-State] <JobState>
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Job
      [-Command <String[]>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

Description

cmdlet은 Remove-Jobcmdlet 또는 AsJob 매개 변수를 지원하는 cmdlet Invoke-Command 에 의해 시작된 Start-Job PowerShell 백그라운드 작업을 삭제합니다.

를 사용하여 Remove-Job 모든 작업을 삭제하거나 선택한 작업을 삭제할 수 있습니다. 작업은 이름, ID, 인스턴스 ID, 명령 또는 상태로 식별됩니다. 또는 작업 개체를 파이프라인 Remove-Job아래로 보낼 수 있습니다. 매개 변수 또는 매개 변수 값이 Remove-Job 없으면 아무런 효과가 없습니다.

PowerShell 3.0 Remove-Job 부터 는 예약된 작업 및 워크플로 작업과 같은 사용자 지정 작업 유형을 삭제할 수 있습니다. 예를 들어 는 Remove-Job 예약된 작업, 디스크에서 예약된 작업의 모든 인스턴스 및 트리거된 모든 작업 인스턴스의 결과를 삭제합니다.

실행 중인 작업을 Remove-Job 삭제하려고 하면 실패합니다. cmdlet을 Stop-Job 사용하여 실행 중인 작업을 중지합니다. 또는 Force 매개 변수와 함께 를 사용하여 Remove-Job 실행 중인 작업을 삭제합니다.

백그라운드 작업을 삭제하거나 PowerShell 세션을 닫을 때까지 작업은 전역 작업 캐시에 남아 있습니다.

예제

예제 1: 이름을 사용하여 작업 삭제

이 예제에서는 변수와 파이프라인을 사용하여 이름으로 작업을 삭제합니다.

$batch = Get-Job -Name BatchJob
$batch | Remove-Job

Get-Job 에서는 Name 매개 변수를 사용하여 BatchJob 작업을 지정합니다. 작업 개체는 변수에 $batch 저장됩니다. 의 $batch 개체가 파이프라인 아래로 전송됩니다 Remove-Job.

다른 방법은 작업 매개 변수(예: Remove-Job -Job $batch)를 사용하는 것입니다.

예제 2: 세션의 모든 작업 삭제

이 예제에서는 현재 PowerShell 세션의 모든 작업이 삭제됩니다.

Get-job | Remove-Job

Get-Job 는 현재 PowerShell 세션의 모든 작업을 가져옵니다. 작업 개체는 파이프라인 Remove-Job아래로 전송됩니다.

예제 3: 시작되지 않은 작업 삭제

다음은 시작되지 않은 현재 PowerShell 세션에서 모든 작업을 삭제하는 예제입니다.

Remove-Job -State NotStarted

Remove-Job에서는 State 매개 변수를 사용하여 작업 상태 지정합니다.

예제 4: 친숙한 이름을 사용하여 작업 삭제

다음은 현재 세션에서 실행 중인 작업을 포함하여 batch*로 끝나는 친숙한 이름으로 모든 작업을 삭제하는 예제입니다.

Remove-Job -Name *batch -Force

Remove-Job 에서는 Name 매개 변수를 사용하여 작업 이름 패턴을 지정합니다. 패턴에는 일괄 처리로 끝나는 모든 작업 이름을 찾기 위한 별표(*) 와일드카드가 포함됩니다. Force 매개 변수는 실행 중인 작업을 삭제합니다.

예제 5: Invoke-Command 만든 작업 삭제

다음은 AsJob 매개 변수를 사용하여 Invoke-Command 원격 컴퓨터에서 시작된 작업을 제거하는 예제입니다.

이 예제에서는 AsJob 매개 변수를 사용하므로 작업 개체가 로컬 컴퓨터에 만들어집니다. 그러나 작업은 원격 컴퓨터에서 실행됩니다. 따라서 로컬 명령을 사용하여 작업을 관리합니다.

$job = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Process} -AsJob
$job | Remove-Job

Invoke-Command는 Server01 컴퓨터에서 작업을 실행합니다. AsJob 매개 변수는 ScriptBlock을 백그라운드 작업으로 실행합니다. 작업 개체는 변수에 $job 저장됩니다. $job 변수 개체는 파이프라인 아래로 전송됩니다Remove-Job.

예제 6: Invoke-Command 만든 작업을 삭제하고 Start-Job

이 예제에서는 를 사용하여 Invoke-Command 를 실행 Start-Job하여 시작된 원격 컴퓨터에서 작업을 제거하는 방법을 보여줍니다. 작업 개체는 원격 컴퓨터에서 만들어지고 원격 명령은 작업을 관리하는 데 사용됩니다. 원격 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-PSSessionServer01 컴퓨터에 대한 영구 연결인 PSSession을 만듭니다. 연결이 변수에 $S 저장됩니다.

Invoke-Command 는 에 저장된 세션에 연결합니다 $S. ScriptBlock은 를 사용하여 Start-Job 원격 작업을 시작합니다. 작업은 명령을 실행하고 Get-ProcessName 매개 변수를 사용하여 친숙한 작업 이름 MyJob을 지정합니다.

Invoke-Command 는 세션을 사용하고 를 $S 실행합니다 Remove-Job. Name 매개 변수는 MyJob이라는 작업이 삭제되도록 지정합니다.

예제 7: InstanceId를 사용하여 작업 삭제

이 예제에서는 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 는 백그라운드 작업을 시작하고 작업 개체는 변수에 $job 저장됩니다.

$job 개체가 파이프라인 아래로 전송됩니다 Format-List. Property 매개 변수는 별표(*)를 사용하여 모든 개체의 속성이 목록에 표시되도록 지정합니다.

Remove-Job 에서는 InstanceId 매개 변수를 사용하여 삭제할 작업을 지정합니다.

매개 변수

-Command

지정한 단어가 명령에 포함된 작업을 삭제합니다. 쉼표로 구분된 배열을 입력할 수 있습니다.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Confirm

가 실행되기 전에 Remove-Job 확인을 묻는 메시지를 표시합니다.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Filter

연결된 해시 테이블에 설정된 모든 조건을 충족하는 작업을 삭제합니다. 키는 작업 속성이고 값은 작업 속성 값인 해시 테이블을 입력합니다.

이 매개 변수는 워크플로 작업, 예약된 작업 등의 사용자 지정 작업 유형에서만 적용됩니다. 를 사용하여 만든 작업과 같은 표준 백그라운드 작업에서는 Start-Job작동하지 않습니다.

이 매개 변수는 PowerShell 3.0에서 도입되었습니다.

Type:Hashtable
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Force

작업의 상태가 실행 중이더라도 작업을 삭제합니다. Force 매개 변수가 지정되지 않은 경우 는 Remove-Job 실행 중인 작업을 삭제하지 않습니다.

Type:SwitchParameter
Aliases:F
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Id

지정된 ID를 사용하여 백그라운드 작업을 삭제합니다. 쉼표로 구분된 배열을 입력할 수 있습니다. 작업의 ID 는 현재 세션 내에서 작업을 식별하는 고유한 정수입니다.

작업의 ID를 찾으려면 매개 변수 없이 를 사용합니다 Get-Job .

Type:Int32[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-InstanceId

지정된 InstanceId를 사용하여 작업을 삭제합니다. 쉼표로 구분된 배열을 입력할 수 있습니다. InstanceId는 작업을 식별하는 고유한 GUID입니다.

작업의 InstanceId를 찾으려면 를 사용합니다 Get-Job.

Type:Guid[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Job

삭제할 작업을 지정합니다. 작업이 포함된 변수 또는 작업을 가져오는 명령을 입력합니다. 쉼표로 구분된 배열을 입력할 수 있습니다.

파이프라인 Remove-Job아래로 작업 개체를 로 보낼 수 있습니다.

Type:Job[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Name

지정된 이름을 가진 작업만 삭제합니다. 와일드카드가 지원됩니다. 쉼표로 구분된 배열을 입력할 수 있습니다.

PowerShell 세션 내에서도 작업에 대한 친숙한 이름은 고유하지 않습니다. 이름으로 파일을 삭제할 때 WhatIfConfirm 매개 변수를 사용합니다.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-State

지정된 상태의 작업만 삭제합니다. 실행 중 상태인 작업을 삭제하려면 Force 매개 변수를 사용합니다.

허용되는 값:

  • AtBreakpoint
  • 차단
  • 완료됨
  • 연결 끊김
  • 실패
  • NotStarted
  • 실행 중
  • 중지됨
  • 중지 중
  • 일시 중단
  • Suspending
Type:JobState
Accepted values:AtBreakpoint, Blocked, Completed, Disconnected, Failed, NotStarted, Running, Stopped, Stopping, Suspended, Suspending
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-WhatIf

실행될 경우 Remove-Job 어떤 일이 발생하는지 표시합니다. cmdlet이 실행되지 않습니다.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

입력

Job

파이프라인 Remove-Job아래로 작업 개체를 에 보낼 수 있습니다.

출력

None

Remove-Job 은 출력을 생성하지 않습니다.

참고

PowerShell 작업은 새 프로세스를 만듭니다. 작업이 완료되면 프로세스가 종료됩니다. 가 실행되면 Remove-Job 작업의 상태가 제거됩니다.

작업이 완료되기 전에 중지되고 프로세스가 종료되지 않으면 프로세스가 강제로 종료됩니다.