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

구문

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

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

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

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

Stop-Job [-State {<NotStarted> | <Running> | <Completed> | <Failed> | <Stopped> | <Blocked>}] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]

설명

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

Stop-Job을 사용하여 Start-Job을 통해서나 Invoke-Command의 AsJob 매개 변수를 통해 시작된 작업을 중지할 수 있습니다. 백그라운드 작업을 중지할 때 Windows PowerShell은 해당 작업 큐에서 보류 중인 모든 작업을 완료한 다음 해당 작업을 종료합니다. 이 명령이 전송된 후에는 새 작업이 큐에 추가되지 않습니다.

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

매개 변수

-Id <Int32[]>

지정된 ID를 가진 작업을 중지합니다. 기본값은 현재 세션의 모든 작업입니다.

ID는 현재 세션 내에서 작업을 고유하게 식별하는 정수입니다. 이 ID는 InstanceId보다 기억하거나 입력하기 쉽지만 현재 세션 내부에서만 고유합니다. 쉼표로 구분하여 하나 이상의 ID를 입력할 수 있습니다. 작업 ID를 찾으려면 매개 변수 없이 "Get-Job"을 입력합니다.

필수 여부

true

위치

1

기본값

파이프라인 입력 적용 여부

true (ByPropertyName)

와일드카드 문자 적용 여부

false

-InstanceId <Guid[]>

지정된 인스턴스 ID를 가진 작업만 중지합니다. 기본값은 모든 작업입니다.

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

필수 여부

false

위치

1

기본값

파이프라인 입력 적용 여부

true (ByPropertyName)

와일드카드 문자 적용 여부

false

-Job <Job[]>

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

필수 여부

true

위치

1

기본값

파이프라인 입력 적용 여부

true (ByValue, ByPropertyName)

와일드카드 문자 적용 여부

false

-Name <string[]>

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

이름이 반드시 고유하지는 않으므로 이름으로 작업을 중지하는 경우 WhatIf 및 Confirm 매개 변수를 사용하십시오.

필수 여부

false

위치

1

기본값

파이프라인 입력 적용 여부

true (ByPropertyName)

와일드카드 문자 적용 여부

true

-PassThru

새 백그라운드 작업을 나타내는 개체를 반환합니다. 기본적으로 이 cmdlet에서는 출력을 생성하지 않습니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-State <JobState>

지정된 상태의 작업만 중지합니다. 유효한 값은 NotStarted, Running, Completed, Stopped, Failed 및 Blocked입니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

true (ByPropertyName)

와일드카드 문자 적용 여부

false

-Confirm

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

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-WhatIf

명령을 실제로 실행하지 않고도 명령이 실행될 경우 발생할 수 있는 현상을 설명합니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

<CommonParameters>

이 cmdlet은 -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, -OutVariable 등의 일반 매개 변수를 지원합니다. 자세한 내용은 about_Commonparameters.

입력 및 출력

입력 유형은 cmdlet으로 파이프할 수 있는 개체의 유형입니다. 반환 유형은 cmdlet에서 반환되는 개체의 유형입니다.

입력

System.Management.Automation.RemotingJob

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

출력

없음 또는 System.Management.Automation.RemotingJob

PassThru 매개 변수를 사용하는 경우 Stop-Job은 작업 개체를 반환합니다. 그렇지 않으면 아무 출력도 생성하지 않습니다.

예 1

C:\PS>$s = new-pssession -computername Server01 -credential domain01\admin02

C:\PS> $j = invoke-command -session $s -scriptblock {start-job -scriptblock {get-eventlog system}} 

C:\PS> invoke-command -session $s -scriptblock {param($j) stop-job -job $j} -ArgumentList $j

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

Invoke-Command를 통해 Start-Job 명령을 원격으로 실행하여 작업을 시작했기 때문에 작업 개체가 원격 컴퓨터에 저장되며, 다른 Invoke-Command 명령을 사용하여 Stop-Job 명령을 원격으로 실행해야 합니다. 원격 백그라운드 작업에 대한 자세한 내용은 about_Remote_Jobs를 참조하십시오.

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

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

세 번째 명령은 작업을 중지합니다. 이 명령은 Invoke-Command cmdlet을 사용하여 Server01의 PSSession에서 Stop-Job 명령을 실행합니다. 작업 개체가 로컬 컴퓨터의 변수인 $j에 저장되기 때문에 이 명령은 "param" 키워드를 사용하여 명령에서 로컬 변수를 선언하고 ArgumentList 매개 변수를 사용하여 변수의 값을 제공합니다. 

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






예 2

C:\PS>stop-job -state failed

설명
-----------
이 명령은 State 값이 "Failed"인 모든 작업을 중지합니다.






예 3

C:\PS>stop-job -name job1

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






예 4

C:\PS>stop-job -id 1, 3, 4

설명
-----------
이 명령은 세 작업을 중지하며, 해당 작업을 ID로 식별합니다.






예 5

C:\PS>get-job | stop-job

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






예 6

C:\PS>stop-job -state blocked

설명
-----------
이 명령은 작업 상태가 "Blocked"인 모든 작업을 중지합니다.






예 7

C:\PS>get-job | format-table ID, Name, Command, @{Label="State";Expression={$_.jobstateinfo.state}}, I
nstanceID -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

C:\PS> stop-job -instanceid e3bbfed1-9c53-401a-a2c3-a8db34336adf

설명
-----------
이들 명령은 인스턴스 ID에 따라 작업을 중지하는 방법을 보여 줍니다. 

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

두 번째 명령은 InstanceID 매개 변수와 함께 Stop-Job 명령을 사용하여 선택된 작업을 중지합니다.






예 8

C:\PS>$j = invoke-command -computername Server01 -scriptblock {get-eventlog system} -asjob

C:\PS> $j | stop-job -passthru

Id    Name    State      HasMoreData     Location         Command
--    ----    ----      -----------     --------          -------
5     Job5    Stopped    True            judithh-tablet   get-eventlog system

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

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

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

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

두 번째 명령은 파이프라인 연산자를 사용하여 $j 변수의 작업을 Stop-Job으로 보냅니다. 이 명령은 PassThru 매개 변수를 사용하여 작업 개체를 반환하도록 Stop-Job에 지정합니다. 작업 개체 표시를 통해 작업의 State가 "Stopped"인 것을 확인할 수 있습니다.

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






참고 항목




목차