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

기본값

Current user

파이프라인 입력 적용 여부

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비트 프로세스로 작업을 실행합니다.






참고 항목




목차