Start-Job
Windows PowerShell 백그라운드 작업을 시작합니다.
구문
Start-Job [-ScriptBlock] <scriptblock> [[-InitializationScript] <scriptblock>] [-ArgumentList <Object[]>] [-Authentication {<Default> | <Basic> | <Negotiate> | <NegotiateWithImplicitCredential> | <Credssp> | <Digest> | <Kerberos>}] [-Credential <PSCredential>] [-InputObject <psobject>] [-Name <string>] [-RunAs32] [<CommonParameters>]
Start-Job [[-FilePath] <string>] [[-InitializationScript] <scriptblock>] [-ArgumentList <Object[]>] [-Authentication {<Default> | <Basic> | <Negotiate> | <NegotiateWithImplicitCredential> | <Credssp> | <Digest> | <Kerberos>}] [-Credential <PSCredential>] [-InputObject <psobject>] [-Name <string>] [-RunAs32] [<CommonParameters>]
설명
Start-Job cmdlet은 로컬 컴퓨터에서 Windows PowerShell 백그라운드 작업을 시작합니다.
Windows PowerShell 백그라운드 작업은 현재 세션과 상호 작용하지 않고 "백그라운드에서" 명령을 실행합니다. 백그라운드 작업을 시작하면 작업이 완료되는 데 시간이 많이 걸리는 경우에도 작업 개체가 즉시 반환됩니다. 작업이 실행되는 동안 중단 없이 세션에서 작업을 계속할 수 있습니다.
작업 개체에는 작업에 대한 유용한 정보가 포함되어 있지만 작업 결과는 포함되어 있지 않습니다. 작업이 완료되면 Receive-Job cmdlet을 사용하여 작업 결과를 가져옵니다. 백그라운드 작업에 대한 자세한 내용은 about_Jobs를 참조하십시오.
원격 컴퓨터에서 백그라운드 작업을 실행하려면 많은 cmdlet에서 사용할 수 있는 AsJob 매개 변수를 사용하거나 Invoke-Command cmdlet을 사용하여 원격 컴퓨터에서 Start-Job 명령을 실행합니다. 자세한 내용은 about_Remote_Jobs를 참조하십시오.
매개 변수
-ArgumentList <Object[]>
FilePath 매개 변수로 지정된 스크립트의 인수(매개 변수 값)를 지정합니다.
ArgumentList 매개 변수 이름 뒤의 모든 값이 ArgumentList의 값으로 해석되기 때문에 ArgumentList 매개 변수는 명령에서 마지막 매개 변수여야 합니다.
필수 여부 |
false |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-Authentication <AuthenticationMechanism>
사용자 자격 증명을 인증하는 데 사용되는 메커니즘을 지정합니다. 유효한 값은 Default, Basic, Credssp, Digest, Kerberos, Negotiate 및 NegotiateWithImplicitCredential입니다. 기본값은 Default입니다.
CredSSP 인증은 Windows Vista 및 Windows Server 2008 이상에서만 사용할 수 있습니다.
이 매개 변수의 값에 대한 자세한 내용은 MSDN의 System.Management.Automation.Runspaces.AuthenticationMechanism 열거형에 대한 설명을 참조하십시오.
주의: 사용자의 자격 증명이 인증을 위해 원격 컴퓨터로 전달되는 CredSSP(자격 증명 보안 서비스 공급자) 인증은 원격 네트워크 공유에 액세스하는 것처럼 둘 이상의 리소스에서 인증이 필요한 명령을 위한 것입니다. 이렇게 하면 원격 작업의 보안 위험이 높아집니다. 원격 컴퓨터가 손상된 경우 이 컴퓨터로 전달된 자격 증명을 사용하여 네트워크 세션을 제어할 수 있습니다.
필수 여부 |
false |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-Credential <PSCredential>
이 작업을 수행할 수 있는 권한을 가진 사용자 계정을 지정합니다. 기본값은 현재 사용자입니다.
"User01" 또는 "Domain01\User01"과 같은 사용자 이름을 입력하거나 Get-Credential cmdlet에 의해 생성된 것과 같은 PSCredential 개체를 입력합니다.
필수 여부 |
false |
위치 |
named |
기본값 |
현재 사용자 |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-FilePath <string>
지정된 로컬 스크립트를 백그라운드 작업으로 실행합니다. 스크립트의 경로와 파일 이름을 입력하거나 스크립트 경로를 Start-Job으로 파이프하십시오. 스크립트는 로컬 컴퓨터나 로컬 컴퓨터에서 액세스할 수 있는 디렉터리에 있어야 합니다.
이 매개 변수를 사용하는 경우 Windows PowerShell은 지정된 스크립트 파일의 내용을 스크립트 블록으로 변환하고 스크립트 블록을 백그라운드 작업으로 실행합니다.
필수 여부 |
false |
위치 |
1 |
기본값 |
|
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-InitializationScript <scriptblock>
작업을 시작하기 전에 실행되는 명령을 지정합니다. 명령을 중괄호( { } )로 묶어 스크립트 블록을 만듭니다.
이 매개 변수를 사용하여 작업이 실행되는 세션을 준비할 수 있습니다. 예를 들어 이 매개 변수를 사용하여 함수, 스냅인 및 모듈을 세션에 추가할 수 있습니다.
필수 여부 |
false |
위치 |
2 |
기본값 |
없음 |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-InputObject <psobject>
명령에 대한 입력을 지정합니다. 개체가 포함된 변수를 입력하거나 개체를 생성하는 명령 또는 식을 입력하십시오.
ScriptBlock 매개 변수의 값에서 $input 자동 변수를 사용하여 입력 개체를 나타낼 수 있습니다.
필수 여부 |
false |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
true (ByValue) |
와일드카드 문자 적용 여부 |
false |
-Name <string>
새 작업의 이름을 지정합니다. 이 이름을 사용하여 Stop-Job과 같은 다른 작업 cmdlet에서 작업을 식별할 수 있습니다.
기본 이름은 Job#입니다. 여기서 "#"은 작업마다 증가하는 서수입니다.
필수 여부 |
false |
위치 |
named |
기본값 |
Job<number> |
파이프라인 입력 적용 여부 |
true (ByPropertyName) |
와일드카드 문자 적용 여부 |
false |
-RunAs32
32비트 프로세스로 작업을 실행합니다.
이 매개 변수를 사용하여 64비트 운영 체제에서 32비트 프로세스로 작업이 실행되도록 강제할 수 있습니다.
필수 여부 |
false |
위치 |
named |
기본값 |
False |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-ScriptBlock <scriptblock>
백그라운드 작업에서 실행할 명령을 지정합니다. 명령을 중괄호( { } )로 묶어 스크립트 블록을 만듭니다. 이 매개 변수는 필수 사항입니다.
필수 여부 |
true |
위치 |
1 |
기본값 |
|
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
<CommonParameters>
이 cmdlet은 -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, -OutVariable 등의 일반 매개 변수를 지원합니다. 자세한 내용은 about_commonparameters.
입력 및 출력
입력 유형은 cmdlet으로 파이프할 수 있는 개체의 유형입니다. 반환 유형은 cmdlet에서 반환되는 개체의 유형입니다.
입력 |
System.String 파일 경로를 Start-Job로 파이프할 수 있습니다. |
출력 |
System.Management.Automation.RemotingJob Start-Job은 시작한 작업을 나타내는 개체를 반환합니다. |
참고
백그라운드로 실행되기 위해 Start-Job은 현재 세션 내의 자체 세션에서 실행됩니다. Invoke-Command cmdlet을 사용하여 원격 컴퓨터의 세션에서 Start-Job 명령을 실행하는 경우 Start-Job은 원격 세션 내의 세션에서 실행됩니다.
예 1
C:\PS>start-job -scriptblock {get-process}
C:\PS> start-job -command "get-process"
Id Name State HasMoreData Location Command
--- ---- ----- ----------- -------- -------
1 Job1 Running True localhost get-process
설명
-----------
이 명령은 Get-Process 명령을 실행하는 백그라운드 작업을 시작하고, 작업에 대한 정보가 포함된 작업 개체를 반환합니다. 작업이 백그라운드에서 실행되는 동안 세션에서 작업할 수 있도록 명령 프롬프트가 즉시 반환됩니다.
예 2
C:\PS>$jobWRM = invoke-command -computerName (get-content servers.txt) -scriptblock {get-service winrm} -jobname WinRM -throttlelimit 16 -AsJob
설명
-----------
이 명령은 Invoke-Command cmdlet과 AsJob 매개 변수를 사용하여 많은 컴퓨터에서 "get-service winrm" 명령을 실행하는 백그라운드 작업을 시작합니다. 이 명령은 네트워크 트래픽이 많은 서버에서 실행되기 때문에 Invoke-Command의 ThrottleLimit 매개 변수를 사용하여 동시 명령 수를 16으로 제한합니다.
이 명령은 ComputerName 매개 변수를 사용하여 작업이 실행되는 컴퓨터를 지정합니다. ComputerName 매개 변수의 값은 도메인의 컴퓨터 이름 파일인 Servers.txt 파일에서 텍스트를 가져오는 Get-Content 명령입니다.
이 명령은 ScriptBlock 매개 변수를 사용하여 명령을 지정하고 JobName 매개 변수를 사용하여 작업의 이름을 지정합니다.
예 3
C:\PS>$j = start-job -scriptblock {get-eventlog -log system} -credential domain01\user01
C:\PS> $j | format-list -property *
HasMoreData : True
StatusMessage :
Location : localhost
Command : get-eventlog -log system
JobStateInfo : Running
Finished : System.Threading.ManualResetEvent
InstanceId : 2d9d775f-63e0-4d48-b4bc-c05d0e177f34
Id : 1
Name : Job1
ChildJobs : {Job2}
Output : {}
Error : {}
Progress : {}
Verbose : {}
Debug : {}
Warning : {}
StateChanged :
C:\PS> $j.JobStateInfo.state
Completed
C:\PS> $results = receive-job -job $j
C:\PS> $results
Index Time Type Source EventID Message
----- ---- ---- ------ ------- -------
84366 Feb 18 19:20 Information Service Control M... 7036 The description...
84365 Feb 18 19:16 Information Service Control M... 7036 The description...
84364 Feb 18 19:10 Information Service Control M... 7036 The description...
...
설명
-----------
이들 명령은 이벤트 뷰어의 시스템 로그에서 모든 이벤트를 가져오는 백그라운드 작업을 관리합니다. 작업은 로컬 컴퓨터에서 실행됩니다.
첫 번째 명령은 Start-Job cmdlet을 사용하여 작업을 시작합니다. 이 명령은 Credential 매개 변수를 사용하여 컴퓨터에서 작업을 실행할 수 있는 권한을 가진 사용자의 사용자 계정을 지정한 다음 Start-Job이 반환하는 작업 개체를 $j 변수에 저장합니다.
이 시점에서 작업이 완료되는 동안 다른 작업을 다시 시작할 수 있습니다.
두 번째 명령은 파이프라인 연산자(|)를 사용하여 $j의 작업 개체를 Format-List cmdlet으로 전달합니다. Format-List 명령은 모든 것을 나타내는 * 값과 함께 Property 매개 변수를 사용하여 작업 개체의 모든 속성을 목록으로 표시합니다.
세 번째 명령은 JobStateInfo 속성의 값을 표시합니다. 이 속성에는 작업의 상태가 포함되어 있습니다.
네 번째 명령은 Receive-Job cmdlet을 사용하여 작업의 결과를 가져온 다음 $results 변수에 저장합니다.
마지막 명령은 $results 변수의 내용을 표시합니다.
예 4
C:\PS>start-job -filepath c:\scripts\sample.ps1
설명
-----------
이 명령은 Sample.ps1 스크립트를 백그라운드 작업으로 실행합니다.
예 5
C:\PS>start-job -name WinRm -scriptblock {get-process winrm}
설명
-----------
이 명령은 로컬 컴퓨터에서 WinRM 프로세스를 가져오는 백그라운드 작업을 실행합니다. 이 명령은 ScriptBlock 매개 변수를 사용하여 백그라운드 작업에서 실행되는 명령을 지정하고 Name 매개 변수를 사용하여 새 작업의 이름을 지정합니다.
예 6
C:\PS>start-job -name GetMappingFiles -initializationScript {import-module MapFunctions} -scriptblock {Get-Map -name * | set-content D:\Maps.tif} -runAs32
설명
-----------
이 명령은 많은 양의 데이터를 수집하여 .tif 파일에 저장하는 작업을 시작합니다. 또한 InitializationScript 매개 변수를 사용하여 필요한 모듈을 가져오는 스크립트 블록을 실행합니다. 이 명령은 컴퓨터에 64비트 운영 체제가 있어도 RunAs32 매개 변수를 사용하여 32비트 프로세스로 작업을 실행합니다.
참고 항목
개념
about_Jobs
about_Job_Details
about_remote_jobs
Get-Job
Receive-Job
Wait-Job
Stop-Job
Remove-Job
Invoke-Command