현재 세션에서 실행되는 Windows PowerShell 백그라운드 작업을 가져옵니다.

구문

Get-Job [-Command <string[]>] [<CommonParameters>]

Get-Job [[-InstanceId] <Guid[]>] [<CommonParameters>]

Get-Job [[-Name] <string[]>] [<CommonParameters>]

Get-Job [[-Id] <Int32[]>] [<CommonParameters>]

Get-Job [-State {<NotStarted> | <Running> | <Completed> | <Failed> | <Stopped> | <Blocked>}] [<CommonParameters>]

설명

Get-Job cmdlet은 현재 세션에서 시작된 백그라운드 작업을 나타내는 개체를 가져옵니다. Get-Job을 사용하여 Start-Job을 통해서나 임의 cmdlet의 AsJob 매개 변수를 통해 시작된 작업을 가져올 수 있습니다.

매개 변수가 없는 경우 "Get-Job" 명령은 현재 세션의 모든 작업을 가져옵니다. Get-Job의 매개 변수를 사용하여 특정 작업을 가져올 수 있습니다.

Get-Job이 반환하는 작업 개체에는 작업에 대한 유용한 정보가 포함되어 있지만 작업 결과는 포함되어 있지 않습니다. 결과를 가져오려면 Receive-Job cmdlet을 사용합니다.

Windows PowerShell 백그라운드 작업은 현재 세션과 상호 작용하지 않고 "백그라운드에서" 실행되는 명령입니다. 일반적으로 완료하는 데 오랜 시간이 걸리는 복잡한 명령을 실행하는 데 백그라운드 작업을 사용합니다. Windows PowerShell의 백그라운드 작업에 대한 자세한 내용은 about_Jobs를 참조하십시오.

매개 변수

-Command <string[]>

지정된 명령이 포함된 작업을 가져옵니다. 기본값은 모든 작업입니다. 명령을 문자열로 입력하십시오. 와일드카드를 사용하여 명령 패턴을 지정할 수 있습니다.

필수 여부

false

위치

named

기본값

All jobs

파이프라인 입력 적용 여부

true (ByPropertyName)

와일드카드 문자 적용 여부

true

-Id <Int32[]>

지정된 ID를 가진 작업만 가져옵니다.

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

필수 여부

false

위치

1

기본값

파이프라인 입력 적용 여부

true (ByPropertyName)

와일드카드 문자 적용 여부

false

-InstanceId <Guid[]>

지정된 인스턴스 ID를 가진 작업을 가져옵니다. 기본값은 모든 작업입니다.

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

필수 여부

false

위치

1

기본값

파이프라인 입력 적용 여부

true (ByPropertyName)

와일드카드 문자 적용 여부

true

-Name <string[]>

지정된 이름의 작업을 가져옵니다. 작업 이름을 입력하거나 와일드카드 문자를 사용하여 작업 이름 패턴을 입력하십시오. 기본적으로 Get-Job은 현재 세션의 모든 작업을 가져옵니다.

필수 여부

false

위치

1

기본값

파이프라인 입력 적용 여부

true (ByPropertyName)

와일드카드 문자 적용 여부

true

-State <JobState>

지정된 상태의 작업만 가져옵니다. 유효한 값은 NotStarted, Running, Completed, Stopped, Failed 및 Blocked입니다. 기본적으로 Get-Job은 현재 세션의 모든 작업을 가져옵니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

true (ByPropertyName)

와일드카드 문자 적용 여부

false

<CommonParameters>

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

입력 및 출력

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

입력

없음

입력을 이 cmdlet으로 파이프할 수 없습니다.

출력

System.Management.Automation.RemotingJob

Get-Job은 세션의 작업을 나타내는 개체를 반환합니다.

예 1

C:\PS>get-job

설명
-----------
이 명령은 현재 세션에서 시작된 모든 백그라운드 작업을 가져옵니다. 다른 세션에서 만들어진 작업은 로컬 컴퓨터에서 실행되는 경우에도 포함되지 않습니다.






예 2

C:\PS>$j = get-job -name Job1

C:\PS> $ID = $j.InstanceID

C:\PS> $ID

Guid
----
03c3232e-1d23-453b-a6f4-ed73c9e29d55

C:\PS> stop-job -instanceid $ID

설명
-----------
이들 명령은 작업의 인스턴스 ID를 가져온 다음 이 ID를 사용하여 작업을 중지하는 방법을 보여 줍니다. 고유하지 않은 작업의 이름과 달리 인스턴스 ID는 고유합니다.

첫 번째 명령은 Get-Job cmdlet을 사용하여 작업을 가져옵니다. 이 명령은 Name 매개 변수를 사용하여 작업을 식별하며, Get-Job이 반환하는 작업 개체를 $j 변수에 저장합니다. 이 예에는 지정된 이름의 작업이 하나만 있습니다.

두 번째 명령은 $j 변수에 있는 개체의 InstanceId 속성을 가져와서 $ID 변수에 저장합니다. 

세 번째 명령은 $ID 변수의 값을 표시합니다.

네 번째 명령은 Stop-Job cmdlet을 사용하여 작업을 중지합니다. 또한 InstanceId 매개 변수를 사용하여 작업과 작업의 인스턴스 ID를 나타내는 $ID 변수를 식별합니다.






예 3

C:\PS>get-job -command "*get-process*"

설명
-----------
이 명령은 시스템에서 Get-Process 명령이 포함된 작업을 가져옵니다. 또한 Get-Job의 Command 매개 변수를 사용하여 검색된 작업을 제한합니다. 이 명령은 와일드카드 문자(*)를 사용하여 명령 문자열에 Get-Process 명령을 포함하는 작업을 가져옵니다.






예 4

C:\PS>"*get-process*" | get-job

설명
-----------
이전 예의 명령과 마찬가지로 이 명령은 시스템에서 Get-Process 명령이 포함된 작업을 가져옵니다. 이 명령은 파이프라인 연산자(|)를 사용하여 큰따옴표로 묶인 문자열을 Get-Job cmdlet으로 보냅니다. 이 명령은 이전 명령과 동일합니다.






예 5

C:\PS>get-job -state NotStarted

설명
-----------
이 명령은 만들어졌지만 아직 시작되지 않은 작업만 가져옵니다. 여기에는 이후에 실행되도록 예약된 작업과 아직 예약되지 않은 작업이 포함됩니다.






예 6

C:\PS>get-job -name job*

설명
-----------
이 명령은 작업 이름이 "job"으로 시작하는 작업을 모두 가져옵니다. "job<number>"가 작업의 기본 이름이기 때문에 이 명령은 명시적으로 이름이 할당되지 않은 작업을 모두 가져옵니다.






예 7

C:\PS>start-job -scriptblock {get-process} -name MyJob

C:\PS> $j = get-job -name MyJob

C:\PS> $j

Id       Name      State      HasMoreData     Location    Command
--       ----      -----      -----------     --------    -------
1        myjob     Completed  True            localhost   get-process

C:\PS> receive-job -job $j

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    124       4    13572      12080    59            1140 audiodg
    783      16    11428      13636   100             548 CcmExec
     96       4     4252       3764    59            3856 ccmsetup
...

설명
-----------
이 예에서는 Get-Job을 사용하여 작업 개체를 가져오는 방법 및 작업 개체를 사용하여 명령에서 작업을 나타내는 방법을 보여 줍니다.

첫 번째 명령은 Start-Job cmdlet을 사용하여 로컬 컴퓨터에서 Get-Process 명령을 실행하는 백그라운드 작업을 시작합니다. 이 명령은 Start-Job의 Name 매개 변수를 사용하여 작업에 이름을 할당합니다.

두 번째 명령은 Get-Job을 사용하여 작업을 가져옵니다. 또한 Get-Job의 Name 매개 변수를 사용하여 작업을 식별합니다. 이 명령은 결과 작업 개체를 $j 변수에 저장합니다.

세 번째 명령은 $j 변수에 있는 작업 개체의 값을 표시합니다. State 속성의 값은 작업이 완료되었음을 보여 줍니다. HasMoreData 속성의 값은 작업에서 사용 가능한 결과 중에서 아직 검색되지 않은 것이 있음을 나타냅니다.

네 번째 명령은 Receive-Job cmdlet을 사용하여 작업의 결과를 가져옵니다. 이 명령은 $j 변수의 작업 개체를 사용하여 작업을 나타냅니다. 또한 파이프라인 연산자를 사용하여 작업 개체를 Receive-Job으로 보낼 수 있습니다.






예 8

C:\PS>start-job -scriptblock {get-eventlog system}

C:\PS> invoke-command -computername S1 -scriptblock {get-eventlog system} -AsJob

C:\PS> invoke-command -computername S2 -scriptblock {start-job -scriptblock {get-eventlog system}}

C:\PS> get-job

Id    Name     State      HasMoreData   Location   Command
--    ----     -----      -----------   --------   -------
1     Job1     Running    True          localhost  get-eventlog system
2     Job2     Running    True          S1         get-eventlog system

C:\PS> invoke-command -computername S2 -scriptblock {get-job}

Id    Name     State      HasMoreData   Location   Command
--    ----     -----      -----------   --------   -------
4     Job4     Running    True          localhost  get-eventlog system

설명
-----------
이 예에서는 Get-Job cmdlet이 현재 세션에서 시작된 작업을 모두 가져올 수 있음을 보여 줍니다. 이러한 작업에는 다른 방법을 사용하여 시작된 작업도 포함됩니다.

첫 번째 명령은 Start-Job cmdlet을 사용하여 로컬 컴퓨터에서 작업을 시작합니다.

두 번째 명령은 Invoke-Command의 AsJob 매개 변수를 사용하여 S1 컴퓨터에서 작업을 시작합니다. 작업의 명령이 원격 컴퓨터에서 실행되는 경우에도 작업 개체가 로컬 컴퓨터에 만들어지므로 로컬 명령을 사용하여 작업을 관리합니다.

세 번째 명령은 Invoke-Command cmdlet을 사용하여 S2 컴퓨터에서 Start-Job 명령을 실행합니다. 이 방법을 사용하는 경우 작업 개체가 원격 컴퓨터에 만들어지므로 원격 명령을 사용하여 작업을 관리합니다.

네 번째 명령은 Get-Job을 사용하여 로컬 컴퓨터에 저장된 작업을 가져옵니다.

다섯 번째 명령은 Invoke-Command를 사용하여 S2 컴퓨터에서 Get-Job 명령을 실행합니다.

샘플 출력에 Get-Job 명령의 결과가 나와 있습니다.

원격 컴퓨터에서 백그라운드 작업을 실행하는 방법에 대한 자세한 내용은 about_Remote_Jobs를 참조하십시오.






예 9

C:\PS>start-job -scriptblock {get-process}

Id       Name            State      HasMoreData     Location             Command
--       ----            -----      -----------     --------             -------
1        Job1            Failed     False           localhost            get-process

C:\PS> (get-job).jobstateinfo | format-list -property *

State  : Failed
Reason :


C:\PS> get-job | format-list *

HasMoreData   : False
StatusMessage :
Location      : localhost
Command       : get-process
JobStateInfo  : Failed
Finished      : System.Threading.ManualResetEvent
InstanceId    : fb792295-1318-4f5d-8ac8-8a89c5261507
Id            : 1
Name          : Job1
ChildJobs     : {Job2}
Output        : {}
Error         : {}
Progress      : {}
Verbose       : {}
Debug         : {}
Warning       : {}
StateChanged  :


C:\PS> (get-job -name job2).jobstateinfo.reason
Connecting to remote server using WSManCreateShellEx api failed. The async callback gave the following error message :
Access is denied.

설명
-----------
이 명령은 Get-Job이 반환하는 작업 개체를 사용하여 작업이 실패한 이유를 조사하는 방법을 보여 줍니다. 또한 각 작업의 하위 작업을 가져오는 방법을 보여 줍니다.

첫 번째 명령은 Start-Job cmdlet을 사용하여 로컬 컴퓨터에서 작업을 시작합니다. Start-Job이 반환하는 작업 개체는 작업이 실패했음을 보여 줍니다. State 속성의 값은 "Failed"입니다.

두 번째 명령은 Get-Job을 사용하여 작업 개체를 가져옵니다. 이 명령은 점 방법을 사용하여 개체의 JobStateInfo 속성 값을 가져오며, 파이프라인 연산자를 사용하여 JobStateInfo 속성의 개체를 Format-List cmdlet에 보냅니다. 이 cmdlet은 개체(*)의 모든 속성을 목록으로 표시합니다.

Format-List 명령의 결과는 작업의 Reason 속성 값이 비어 있음을 보여 줍니다.

세 번째 명령은 더 많은 항목을 조사합니다. 이 명령은 Get-Job 명령을 사용하여 작업을 가져온 다음 파이프라인 연산자를 사용하여 전체 작업 개체를 Format-List cmdlet으로 보냅니다. 이 cmdlet은 작업의 모든 속성을 목록으로 표시합니다.

작업 개체의 모든 속성 표시에는 작업에 "Job2"라는 하위 작업이 포함되어 있음을 보여 줍니다.

네 번째 명령은 Get-Job을 사용하여 Job2 하위 작업을 나타내는 작업 개체를 가져옵니다. 이 작업은 이 명령이 실제로 실행한 작업입니다. 이 명령은 점 방법을 사용하여 JobStateInfo 속성의 Reason 속성을 가져옵니다.

결과는 "액세스 거부" 오류 때문에 작업이 실패했음을 보여 줍니다. 사용자가 Windows PowerShell을 열 때 "관리자 권한으로 실행" 옵션을 사용하는 것을 잊은 경우 이런 결과가 발생할 수 있습니다. 

백그라운드 작업에서 Windows PowerShell의 원격 기능을 사용하기 때문에 작업이 로컬 컴퓨터에서 실행되는 경우에도 원격에서 작업을 실행하도록 컴퓨터를 구성해야 합니다.

Windows PowerShell의 원격 요구 사항에 대한 자세한 내용은 about_Remote_Requirements를 참조하십시오. 문제 해결 팁은 about_Remote_Troubleshooting을 참조하십시오.






참고 항목




목차