다음을 통해 공유


Stop-Job

PowerShell 백그라운드 작업을 중지합니다.

구문

SessionIdParameterSet (기본값)

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>]

Description

Stop-Job cmdlet은 진행 중인 PowerShell 백그라운드 작업을 중지합니다. 이 cmdlet을 사용하여 이름, ID, 인스턴스 ID 또는 상태에 따라 모든 작업을 중지하거나 선택한 작업을 중지하거나 작업 개체를 전달하여 Stop-Job수 있습니다.

Stop-Job 사용하여 Start-Job cmdlet 또는 모든 cmdlet의 AsJob 매개 변수를 사용하여 시작한 작업과 같은 백그라운드 작업을 중지할 수 있습니다. 백그라운드 작업을 중지하면 PowerShell은 해당 작업 큐에 보류 중인 모든 작업을 완료한 다음 작업을 종료합니다. 이 명령을 제출한 후에는 큐에 새 작업이 추가되지 않습니다.

이 cmdlet은 백그라운드 작업을 삭제하지 않습니다. 작업을 삭제하려면 Remove-Job cmdlet을 사용합니다.

Windows PowerShell 3.0부터 Stop-JobWorkflowJobsScheduledJobs인스턴스와 같은 사용자 지정 작업 유형도 중지합니다. Stop-Job 사용자 지정 작업 유형을 사용하여 작업을 중지할 수 있도록 하려면 Stop-Job cmdlet을 사용하거나 모듈에서 cmdlet을 사용하거나 가져와서 Import-Module 명령을 실행하기 전에 사용자 지정 작업 유형을 지원하는 모듈을 세션으로 가져옵니다. 특정 사용자 지정 작업 유형에 대한 자세한 내용은 사용자 지정 작업 유형 기능의 설명서를 참조하세요.

예제

예제 1: 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 }

이 예제에서는 Stop-Job cmdlet을 사용하여 원격 컴퓨터에서 실행 중인 작업을 중지하는 방법을 보여줍니다.

작업이 Invoke-Command cmdlet을 사용하여 Start-Job 명령을 원격으로 실행하기 시작했기 때문에 작업 개체는 원격 컴퓨터에 저장됩니다. Invoke-Command 명령을 원격으로 실행하려면 다른 Stop-Job 명령을 사용해야 합니다. 원격 백그라운드 작업에 대한 자세한 내용은 about_Remote_Jobs 참조하세요.

첫 번째 명령은 Server01 컴퓨터에서 PowerShell 세션(PSSession)을 만든 다음 세션 개체를 $s 변수에 저장합니다. 이 명령은 도메인 관리자의 자격 증명을 사용합니다.

두 번째 명령은 Invoke-Command cmdlet을 사용하여 세션에서 Start-Job 명령을 실행합니다. 작업의 명령은 시스템 이벤트 로그의 모든 이벤트를 가져옵니다. 결과 작업 개체는 $j 변수에 저장됩니다.

세 번째 명령은 작업을 중지합니다. Invoke-Command cmdlet을 사용하여 Server01의 Stop-Job 명령을 실행합니다. 작업 개체는 로컬 컴퓨터의 변수인 $j저장되므로 명령은 사용하여 범위 한정자를 사용하여 $j 지역 변수로 식별합니다. Using 범위 한정자에 대한 더 많은 정보는 about_Remote_Variables을 참조하세요.

명령이 완료되면 작업이 중지되고 $s 사용할 수 있습니다.

예제 2: 백그라운드 작업 중지

Stop-Job -Name "Job1"

이 명령은 Job1 백그라운드 작업을 중지합니다.

예제 3: 여러 백그라운드 작업 중지

Stop-Job -Id 1, 3, 4

이 명령은 세 개의 작업을 중지합니다. ID식별합니다.

예제 4: 모든 백그라운드 작업 중지

Get-Job | Stop-Job

이 명령은 현재 세션의 모든 백그라운드 작업을 중지합니다.

예제 5: 차단된 모든 백그라운드 작업 중지

Stop-Job -State Blocked

이 명령은 차단된 모든 작업을 중지합니다.

예제 6: 인스턴스 ID별 작업 중지

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

이러한 명령은 InstanceID따라 작업을 중지하는 방법을 보여 줍니다.

첫 번째 명령은 Get-Job cmdlet을 사용하여 현재 세션에서 작업을 가져옵니다. 이 명령은 파이프라인 연산자(|)를 사용하여 각 작업의 지정된 속성 테이블을 표시하는 Format-Table 명령으로 작업을 보냅니다. 테이블에는 각 작업의 InstanceID 포함됩니다. 계산된 속성을 사용하여 작업 상태를 표시합니다.

두 번째 명령은 Stop-Job 매개 변수가 있는 명령을 사용하여 선택한 작업을 중지합니다.

예제 7: 원격 컴퓨터에서 작업 중지

$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

이 예제에서는 Stop-Job cmdlet을 사용하여 원격 컴퓨터에서 실행 중인 작업을 중지하는 방법을 보여줍니다.

작업이 cmdlet의 Invoke-Command 매개 변수로 시작되었으므로 작업이 원격 컴퓨터에서 실행되는 경우에도 Job 개체가 로컬 컴퓨터에 있습니다. 따라서 로컬 Stop-Job 명령을 사용하여 작업을 중지할 수 있습니다.

첫 번째 명령은 Invoke-Command cmdlet을 사용하여 Server01 컴퓨터에서 백그라운드 작업을 시작합니다. 이 명령은 AsJob 매개 변수를 사용하여 원격 명령을 백그라운드 작업으로 실행합니다.

이 명령은 Start-Job cmdlet이 반환하는 것과 동일한 작업 개체인 작업 개체를 반환합니다. 이 명령은 작업 개체를 $j 변수에 저장합니다.

두 번째 명령은 파이프라인 연산자를 사용하여 $j 변수의 작업을 전송하여 Stop-Job. 이 명령은 PassThru 매개 변수를 사용하여 Stop-Job 작업 개체를 반환하도록 지시합니다. 작업 개체 표시는 작업 상태가 중지되었음을 확인합니다.

원격 백그라운드 작업에 대한 자세한 내용은 about_Remote_Jobs참조하세요.

매개 변수

-Confirm

cmdlet을 실행하기 전에 확인 메시지를 표시합니다.

매개 변수 속성

형식:SwitchParameter
Default value:False
와일드카드 지원:False
DontShow:False
별칭:cf(cf)

매개 변수 집합

(All)
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-Filter

조건의 해시 테이블을 지정합니다. 이 cmdlet은 모든 조건을 충족하는 작업을 중지합니다. 키가 작업 속성이고 값이 작업 속성 값인 해시 테이블을 입력합니다.

이 매개 변수는 WorkflowJobs 및 scheduledJobs 같은 사용자 지정 작업 유형에서만 작동합니다. Start-Job cmdlet을 사용하여 만든 작업과 같은 표준 백그라운드 작업에서는 작동하지 않습니다. 이 매개 변수에 대한 지원에 대한 자세한 내용은 작업 유형에 대한 도움말 항목을 참조하세요.

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

매개 변수 속성

형식:Hashtable
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

FilterParameterSet
Position:0
필수:True
파이프라인의 값:False
속성 이름별 파이프라인의 값:True
나머지 인수의 값:False

-Id

이 cmdlet이 중지하는 작업의 ID를 지정합니다. 기본값은 현재 세션의 모든 작업입니다.

ID는 현재 세션의 작업을 고유하게 식별하는 정수입니다. 인스턴스 ID보다 기억하고 입력하는 것이 더 쉽지만 현재 세션에서만 고유합니다. 하나 이상의 ID를 쉼표로 구분하여 입력할 수 있습니다. 작업의 ID를 찾으려면 Get-Job입력합니다.

매개 변수 속성

형식:

Int32[]

Default value:All jobs
와일드카드 지원:False
DontShow:False

매개 변수 집합

SessionIdParameterSet
Position:0
필수:True
파이프라인의 값:False
속성 이름별 파이프라인의 값:True
나머지 인수의 값:False

-InstanceId

이 cmdlet이 중지하는 작업의 인스턴스 ID를 지정합니다. 기본값은 모든 작업입니다.

인스턴스 ID는 컴퓨터에서 작업을 고유하게 식별하는 GUID입니다. 작업의 인스턴스 ID를 찾으려면 Get-Job사용합니다.

매개 변수 속성

형식:

Guid[]

Default value:All jobs
와일드카드 지원:False
DontShow:False

매개 변수 집합

InstanceIdParameterSet
Position:0
필수:True
파이프라인의 값:False
속성 이름별 파이프라인의 값:True
나머지 인수의 값:False

-Job

이 cmdlet이 중지되는 작업을 지정합니다. 작업을 가져오는 명령이나 작업이 포함된 변수를 입력합니다. 파이프라인 연산자를 사용하여 Stop-Job cmdlet에 작업을 제출할 수도 있습니다. 기본적으로 Stop-Job 현재 세션에서 시작된 모든 작업을 삭제합니다.

매개 변수 속성

형식:

Job[]

Default value:All jobs
와일드카드 지원:False
DontShow:False

매개 변수 집합

JobParameterSet
Position:0
필수:True
파이프라인의 값:True
속성 이름별 파이프라인의 값:True
나머지 인수의 값:False

-Name

이 cmdlet이 중지하는 작업의 이름을 지정합니다. 쉼표로 구분된 목록에 작업 이름을 입력하거나 와일드카드 문자(*)를 사용하여 작업 이름 패턴을 입력합니다. 기본적으로 Stop-Job 현재 세션에서 만든 모든 작업을 중지합니다.

이름이 고유하지는 않으므로 WhatIf 사용하고 이름으로 작업을 중지할 때 매개 변수를 확인합니다.

매개 변수 속성

형식:

String[]

Default value:All jobs
와일드카드 지원:True
DontShow:False

매개 변수 집합

NameParameterSet
Position:0
필수:True
파이프라인의 값:False
속성 이름별 파이프라인의 값:True
나머지 인수의 값:False

-PassThru

작업 중인 항목을 나타내는 개체를 반환합니다. 기본적으로 이 cmdlet은 출력을 생성하지 않습니다.

매개 변수 속성

형식:SwitchParameter
Default value:False
와일드카드 지원:False
DontShow:False

매개 변수 집합

(All)
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-State

작업 상태를 지정합니다. 이 cmdlet은 지정된 상태의 작업만 중지합니다. 이 매개 변수에 허용되는 값은 다음과 같습니다.

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

작업 상태에 대한 자세한 내용은 JobState 열거형참조하세요.

매개 변수 속성

형식:JobState
Default value:All jobs
허용되는 값:NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint
와일드카드 지원:False
DontShow:False

매개 변수 집합

StateParameterSet
Position:0
필수:True
파이프라인의 값:False
속성 이름별 파이프라인의 값:True
나머지 인수의 값:False

-WhatIf

cmdlet이 실행되면 어떻게 되는지 보여 주세요. cmdlet이 실행되지 않습니다.

매개 변수 속성

형식:SwitchParameter
Default value:False
와일드카드 지원:False
DontShow:False
별칭:위스콘신

매개 변수 집합

(All)
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

CommonParameters

이 cmdlet은 일반적인 매개 변수인 -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction 및 -WarningVariable 매개 변수를 지원합니다. 자세한 내용은 about_CommonParameters를 참조하세요.

입력

System.Management.Automation.RemotingJob

작업 개체를 이 cmdlet으로 파이프할 수 있습니다.

출력

None, System.Management.Automation.PSRemotingJob

이 cmdlet은 PassThru 매개 변수를 지정하는 경우 작업 개체를 반환합니다. 그렇지 않으면 이 cmdlet은 출력을 생성하지 않습니다.