Get-Job
현재 세션에서 실행되는 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 |
기본값 |
모든 작업 |
파이프라인 입력 적용 여부 |
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을 참조하십시오.
참고 항목
개념
about_Jobs
about_Job_Details
about_remote_jobs
Start-Job
Receive-Job
Wait-Job
Stop-Job
Remove-Job
Invoke-Command