다음을 통해 공유


Start-Job

PowerShell 백그라운드 작업을 시작합니다.

구문

ComputerName (기본값)

Start-Job
    [-ScriptBlock] <ScriptBlock>
    [[-InitializationScript] <ScriptBlock>]
    [-Name <String>]
    [-Credential <PSCredential>]
    [-Authentication <AuthenticationMechanism>]
    [-RunAs32]
    [-PSVersion <Version>]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

DefinitionName

Start-Job
    [-DefinitionName] <String>
    [[-DefinitionPath] <String>]
    [[-Type] <String>]
    [<CommonParameters>]

FilePathComputerName

Start-Job
    [-FilePath] <String>
    [[-InitializationScript] <ScriptBlock>]
    [-Name <String>]
    [-Credential <PSCredential>]
    [-Authentication <AuthenticationMechanism>]
    [-RunAs32]
    [-PSVersion <Version>]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

LiteralFilePathComputerName

Start-Job
    [[-InitializationScript] <ScriptBlock>]
    -LiteralPath <String>
    [-Name <String>]
    [-Credential <PSCredential>]
    [-Authentication <AuthenticationMechanism>]
    [-RunAs32]
    [-PSVersion <Version>]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

FilePathVMId

Start-Job
    [-VMGuid] <Guid[]>
    [<CommonParameters>]

VMId

Start-Job
    [-VMGuid] <Guid[]>
    [<CommonParameters>]

FilePathVMName

Start-Job
    -VMName <String[]>
    [<CommonParameters>]

VMName

Start-Job
    -VMName <String[]>
    [<CommonParameters>]

Description

Start-Job cmdlet은 로컬 컴퓨터에서 PowerShell 백그라운드 작업을 시작합니다.

PowerShell 백그라운드 작업은 현재 세션과 상호 작용하지 않고 명령을 실행합니다. 백그라운드 작업을 시작하면 작업이 완료되는 데 시간이 오래 걸리는 경우에도 작업 개체가 즉시 반환됩니다. 작업이 실행되는 동안 중단 없이 세션에서 계속 작업할 수 있습니다.

작업 개체에는 작업에 대한 유용한 정보가 포함되어 있지만 작업 결과는 포함되지 않습니다. 작업이 완료되면 Receive-Job cmdlet을 사용하여 작업 결과를 가져옵니다. 백그라운드 작업에 대한 자세한 내용은 about_Jobs참조하세요.

원격 컴퓨터에서 백그라운드 작업을 실행하려면 많은 cmdlet에서 사용할 수 있는 AsJob 매개 변수를 사용하거나 Invoke-Command cmdlet을 사용하여 원격 컴퓨터에서 Start-Job 명령을 실행합니다. 자세한 내용은 about_Remote_Jobs참조하세요.

PowerShell 3.0부터 Start-Job 예약된 작업과 같은 사용자 지정 작업 유형의 인스턴스를 시작할 수 있습니다. Start-Job 사용하여 사용자 지정 형식으로 작업을 시작하는 방법에 대한 자세한 내용은 작업 유형 기능에 대한 도움말 문서를 참조하세요.

예제

예제 1: 백그라운드 작업 시작

이 예제에서는 로컬 컴퓨터에서 백그라운드에서 실행되는 작업을 시작합니다.

Start-Job -ScriptBlock {Get-Process}
Id  Name   PSJobTypeName   State     HasMoreData   Location    Command
--  ----   -------------   -----     -----------   --------    -------
1   Job1   BackgroundJob   Running   True          localhost   Get-Process

Start-Job ScriptBlock 매개 변수를 사용하여 백그라운드 작업으로 Get-Process 실행합니다. 작업이 백그라운드에서 실행되는 동안 작업 정보가 표시되고 PowerShell이 프롬프트로 돌아갑니다.

예제 2: Invoke-Command 사용하여 작업 시작

이 예제에서는 여러 컴퓨터에서 작업을 실행합니다. 작업은 변수에 저장되고 PowerShell 명령줄의 변수 이름을 사용하여 실행됩니다.

$jobWRM = Invoke-Command -ComputerName (Get-Content -Path C:\Servers.txt) -ScriptBlock {
   Get-Service -Name WinRM } -JobName WinRM -ThrottleLimit 16 -AsJob

Invoke-Command 사용하는 작업이 만들어지고 $jobWRM 변수에 저장됩니다. Invoke-Command ComputerName 매개 변수를 사용하여 작업이 실행되는 컴퓨터를 지정합니다. Get-Content C:\Servers.txt 파일에서 서버 이름을 가져옵니다.

ScriptBlock 매개 변수는 Get-ServiceWinRM 서비스를 가져오는 명령을 지정합니다. JobName 매개 변수는 WinRM작업의 사용자 친화적인 이름을 지정합니다. ThrottleLimit 매개 변수는 동시 명령 수를 16으로 제한합니다. AsJob 매개 변수는 서버에서 명령을 실행하는 백그라운드 작업을 시작합니다.

예제 3: 작업 정보 가져오기

이 예제에서는 작업에 대한 정보를 가져오고 로컬 컴퓨터에서 실행된 완료된 작업의 결과를 표시합니다.

$j = Start-Job -ScriptBlock { Get-WinEvent -Log System } -Credential Domain01\User01
$j | Select-Object -Property *
State         : Completed
HasMoreData   : True
StatusMessage :
Location      : localhost
Command       : Get-WinEvent -Log System
JobStateInfo  : Completed
Finished      : System.Threading.ManualResetEvent
InstanceId    : 27ce3fd9-40ed-488a-99e5-679cd91b9dd3
Id            : 18
Name          : Job18
ChildJobs     : {Job19}
PSBeginTime   : 8/8/2019 14:41:57
PSEndTime     : 8/8/2019 14:42:07
PSJobTypeName : BackgroundJob
Output        : {}
Error         : {}
Progress      : {}
Verbose       : {}
Debug         : {}
Warning       : {}
Information   : {}

Start-JobScriptBlock 매개 변수를 사용하여 Get-WinEvent 지정하여 시스템 로그를 가져오는 명령을 실행합니다. 자격 증명 매개 변수는 컴퓨터에서 작업을 실행할 수 있는 권한이 있는 도메인 사용자 계정을 지정합니다. 작업 개체는 $j 변수에 저장됩니다.

$j 변수의 개체가 파이프라인을 따라 Select-Object로 전송됩니다. Property 매개 변수는 모든 작업 개체의 속성을 표시하는 별표(*)를 지정합니다.

예제 4: 스크립트를 백그라운드 작업으로 실행

이 예제에서는 로컬 컴퓨터의 스크립트가 백그라운드 작업으로 실행됩니다.

Start-Job -FilePath C:\Scripts\Sample.ps1

Start-Job FilePath 매개 변수를 사용하여 로컬 컴퓨터에 저장된 스크립트 파일을 지정합니다.

예제 5: 백그라운드 작업을 사용하여 프로세스 가져오기

이 예제에서는 백그라운드 작업을 사용하여 이름으로 지정된 프로세스를 가져옵니다.

Start-Job -Name PShellJob -ScriptBlock { Get-Process -Name PowerShell }

Start-Job Name 매개 변수를 사용하여 PShellJob 친숙한 작업 이름을 지정합니다. ScriptBlock 매개 변수는 이름이 powerShell Get-Process프로세스를 가져올 지정합니다.

예제 6: 백그라운드 작업을 사용하여 데이터 수집 및 저장

다음은 많은 양의 지도 데이터를 수집한 다음 .tif 파일에 저장하는 작업을 시작하는 예제입니다.

Start-Job -Name GetMappingFiles -InitializationScript {Import-Module MapFunctions} -ScriptBlock {
   Get-Map -Name * | Set-Content -Path D:\Maps.tif } -RunAs32

Start-Job Name 매개 변수를 사용하여 GetMappingFiles 친숙한 작업 이름을 지정합니다. InitializationScript 매개 변수는 MapFunctions 모듈을 가져오는 스크립트 블록을 실행합니다. ScriptBlock 매개 변수는 Get-Map 실행되고 Set-ContentPath 매개 변수로 지정된 위치에 데이터를 저장합니다. RunAs32 매개 변수는 64비트 운영 체제에서도 프로세스를 32비트로 실행합니다.

예제 7: 백그라운드 작업에 입력 전달

이 예제에서는 $input 자동 변수를 사용하여 입력 개체를 처리합니다. Receive-Job 사용하여 작업의 출력을 봅니다.

Start-Job -ScriptBlock { Get-Content $input } -InputObject "C:\Servers.txt"
Receive-Job -Name Job45 -Keep
Server01
Server02
Server03
Server04

Start-Job ScriptBlock 매개 변수를 사용하여 Get-Content 자동 변수로 $input 실행합니다. $input 변수는 InputObject 매개 변수에서 개체를 가져옵니다. Receive-Job Name 매개 변수를 사용하여 작업을 지정하고 결과를 출력합니다. Keep 매개 변수는 PowerShell 세션 중에 다시 볼 수 있도록 작업 출력을 저장합니다.

매개 변수

-ArgumentList

FilePath 매개 변수로 지정된 스크립트에 대한 인수 배열 또는 매개 변수 값을 지정합니다.

ArgumentList 매개 변수 이름 뒤에 있는 모든 값은 ArgumentList의 값으로 해석되므로 이 매개 변수를 명령의 마지막 매개 변수로 지정합니다.

매개 변수 속성

형식:

Object[]

Default value:None
와일드카드 지원:False
DontShow:False
별칭:매개변수(Args)

매개 변수 집합

ComputerName
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FilePathComputerName
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
LiteralFilePathComputerName
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-Authentication

사용자 자격 증명을 인증하는 데 사용되는 메커니즘을 지정합니다.

이 매개 변수에 허용되는 값은 다음과 같습니다.

  • 기본값
  • 기초
  • Credssp
  • 요약
  • Kerberos
  • 협상하다
  • 암묵적 자격 증명으로 협상하기

기본값은 Default입니다.

CredSSP 인증은 Windows Vista, Windows Server 2008 이상 버전의 Windows 운영 체제에서만 사용할 수 있습니다.

이 매개 변수의 값에 대한 자세한 내용은 AuthenticationMechanism참조하세요.

주의

사용자의 자격 증명이 인증될 원격 컴퓨터에 전달되는 CredSSP(자격 증명 보안 지원 공급자) 인증은 원격 네트워크 공유 액세스와 같이 둘 이상의 리소스에 대한 인증이 필요한 명령을 위해 설계되었습니다. 이 메커니즘은 원격 작업의 보안 위험을 높입니다. 원격 컴퓨터가 손상된 경우 이 컴퓨터에 전달된 자격 증명을 사용하여 네트워크 세션을 제어할 수 있습니다.

매개 변수 속성

형식:AuthenticationMechanism
Default value:Default
허용되는 값:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
와일드카드 지원:False
DontShow:False

매개 변수 집합

ComputerName
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FilePathComputerName
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
LiteralFilePathComputerName
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-Credential

이 작업을 수행할 수 있는 권한이 있는 사용자 계정을 지정합니다. 자격 증명 매개 변수가 지정되지 않은 경우 명령은 현재 사용자의 자격 증명을 사용합니다.

User01 또는 Domain01\User01같은 사용자 이름을 입력하거나 cmdlet의 개체와 같은 Get-Credential 개체를 입력합니다.

매개 변수 속성

형식:PSCredential
Default value:Current user
와일드카드 지원:False
DontShow:False

매개 변수 집합

ComputerName
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FilePathComputerName
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
LiteralFilePathComputerName
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-DefinitionName

이 cmdlet이 시작하는 작업의 정의 이름을 지정합니다. 이 매개 변수를 사용하여 예약된 작업과 같은 정의 이름을 가진 사용자 지정 작업 유형을 시작합니다.

Start-Job 사용하여 예약된 작업의 인스턴스를 시작하면 작업 트리거 또는 작업 옵션에 관계없이 작업이 즉시 시작됩니다. 결과 작업 인스턴스는 예약된 작업이지만 트리거된 예약된 작업과 같이 디스크에 저장되지 않습니다. Start-Job 매개 변수를 사용하여 예약된 작업에서 실행되는 스크립트의 매개 변수에 대한 값을 제공할 수 없습니다. 자세한 내용은 about_Scheduled_Jobs참조하세요.

이 매개 변수는 PowerShell 3.0에서 도입되었습니다.

매개 변수 속성

형식:String
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

DefinitionName
Position:0
필수:True
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-DefinitionPath

이 cmdlet이 시작하는 작업에 대한 정의 경로를 지정합니다. 정의 경로를 입력합니다. DefinitionPathDefinitionName 매개 변수 값의 연결은 작업 정의의 정규화된 경로입니다. 이 매개 변수를 사용하여 예약된 작업과 같은 정의 경로가 있는 사용자 지정 작업 유형을 시작합니다.

예약된 작업의 경우 DefinitionPath 매개 변수의 값은 $home\AppData\Local\Windows\PowerShell\ScheduledJob.

이 매개 변수는 PowerShell 3.0에서 도입되었습니다.

매개 변수 속성

형식:String
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

DefinitionName
Position:1
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-FilePath

백그라운드 작업으로 실행되는 Start-Job 로컬 스크립트를 지정합니다. 스크립트의 경로 및 파일 이름을 입력하거나 파이프라인을 사용하여 스크립트 경로를 Start-Job으로 전송하십시오. 스크립트는 로컬 컴퓨터 또는 로컬 컴퓨터에서 액세스할 수 있는 폴더에 있어야 합니다.

이 매개 변수를 사용하는 경우 PowerShell은 지정된 스크립트 파일의 내용을 스크립트 블록으로 변환하고 스크립트 블록을 백그라운드 작업으로 실행합니다.

매개 변수 속성

형식:String
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

FilePathComputerName
Position:0
필수:True
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-InitializationScript

작업이 시작되기 전에 실행되는 명령을 지정합니다. 스크립트 블록을 만들려면 명령을 중괄호({})로 묶습니다.

이 매개 변수를 사용하여 작업이 실행되는 세션을 준비합니다. 예를 들어 함수, 스냅인 및 모듈을 세션에 추가하는 데 사용할 수 있습니다.

매개 변수 속성

형식:ScriptBlock
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

ComputerName
Position:1
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FilePathComputerName
Position:1
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
LiteralFilePathComputerName
Position:1
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-InputObject

명령에 대한 입력을 지정합니다. 개체가 포함된 변수를 입력하거나 개체를 생성하는 명령이나 식을 입력합니다.

ScriptBlock 매개 변수 값에서 $input 자동 변수를 사용하여 입력 개체를 나타냅니다.

매개 변수 속성

형식:PSObject
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

ComputerName
Position:Named
필수:False
파이프라인의 값:True
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FilePathComputerName
Position:Named
필수:False
파이프라인의 값:True
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
LiteralFilePathComputerName
Position:Named
필수:False
파이프라인의 값:True
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-LiteralPath

이 cmdlet이 백그라운드 작업으로 실행되는 로컬 스크립트를 지정합니다. 로컬 컴퓨터에서 스크립트의 경로를 입력합니다.

Start-Job LiteralPath 매개 변수의 값을 입력된 것과 정확하게 사용합니다. 와일드카드 문자로 해석되는 문자는 없습니다. 경로에 이스케이프 문자가 포함된 경우 작은따옴표로 묶습니다. 작은따옴표는 PowerShell에 문자를 이스케이프 시퀀스로 해석하지 않도록 지시합니다.

매개 변수 속성

형식:String
Default value:None
와일드카드 지원:False
DontShow:False
별칭:PSPath

매개 변수 집합

LiteralFilePathComputerName
Position:Named
필수:True
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-Name

새 작업을 위한 직관적인 이름을 지정합니다. Stop-Job cmdlet과 같은 다른 작업 cmdlet을 식별하기 위해 이 이름을 사용할 수 있습니다.

기본 친화 이름은 Job#이며, 여기서 #은 각 작업에 대해 증가하는 서수입니다.

매개 변수 속성

형식:String
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

ComputerName
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:True
나머지 인수의 값:False
FilePathComputerName
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:True
나머지 인수의 값:False
LiteralFilePathComputerName
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:True
나머지 인수의 값:False

-PSVersion

버전을 지정합니다. Start-Job PowerShell 버전을 사용하여 작업을 실행합니다. 이 매개 변수에 허용되는 값은 2.03.0.

이 매개 변수는 PowerShell 3.0에서 도입되었습니다.

매개 변수 속성

형식:Version
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

ComputerName
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FilePathComputerName
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
LiteralFilePathComputerName
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-RunAs32

Start-Job 32비트 프로세스에서 작업을 실행했음을 나타냅니다. RunAs32 64비트 운영 체제에서도 작업이 32비트 프로세스에서 실행되도록 합니다.

Windows 7 및 Windows Server 2008 R2의 64비트 버전에서 Start-Job 명령에 RunAs32 매개 변수가 포함된 경우 자격 증명 매개 변수를 사용하여 다른 사용자의 자격 증명을 지정할 수 없습니다.

매개 변수 속성

형식:SwitchParameter
Default value:False
와일드카드 지원:False
DontShow:False

매개 변수 집합

ComputerName
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FilePathComputerName
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
LiteralFilePathComputerName
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-ScriptBlock

백그라운드 작업에서 실행할 명령을 지정합니다. 스크립트 블록을 만들려면 명령을 중괄호({})로 묶습니다. $input 자동 변수를 사용하여 InputObject 매개 변수의 값에 액세스합니다. 이 매개 변수는 필수입니다.

매개 변수 속성

형식:ScriptBlock
Default value:None
와일드카드 지원:False
DontShow:False
별칭:명령어

매개 변수 집합

ComputerName
Position:0
필수:True
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-Type

Start-Job시작 작업에 대한 사용자 지정 형식을 지정합니다. 예약된 작업의 경우 PSScheduledJob, 워크플로 작업의 경우 PSWorkflowJob과 같은 사용자 지정 작업 유형 이름을 입력합니다. 이 매개 변수는 표준 백그라운드 작업에 유효하지 않습니다.

이 매개 변수는 PowerShell 3.0에서 도입되었습니다.

매개 변수 속성

형식:String
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

DefinitionName
Position:2
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

CommonParameters

이 cmdlet은 일반적인 매개 변수인 -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction 및 -WarningVariable 매개 변수를 지원합니다. 자세한 내용은 about_CommonParameters를 참조하세요.

입력

String

파이프라인을 사용하여 Name 속성이 있는 개체를 Name 매개 변수로 보낼 수 있습니다. 예를 들어, FileInfo 개체를 에서 Get-ChildItemStart-Job로 파이프라인할 수 있습니다.

출력

System.Management.Automation.PSRemotingJob

Start-Job 시작한 작업을 나타내는 PSRemotingJob 개체를 반환합니다.

참고

백그라운드에서 실행하려면 Start-Job 현재 세션의 자체 세션에서 실행됩니다. Invoke-Command cmdlet을 사용하여 원격 컴퓨터의 세션에서 Start-Job 명령을 실행하는 경우 Start-Job 원격 세션의 세션에서 실행됩니다.