Wait-Job
세션에서 실행 중인 PowerShell 작업 중 하나 또는 전부가 종료 상태가 될 때까지 기다립니다.
구문
Wait-Job
[-Any]
[-Timeout <Int32>]
[-Force]
[-Id] <Int32[]>
[<CommonParameters>]
Wait-Job
[-Job] <Job[]>
[-Any]
[-Timeout <Int32>]
[-Force]
[<CommonParameters>]
Wait-Job
[-Any]
[-Timeout <Int32>]
[-Force]
[-Name] <String[]>
[<CommonParameters>]
Wait-Job
[-Any]
[-Timeout <Int32>]
[-Force]
[-InstanceId] <Guid[]>
[<CommonParameters>]
Wait-Job
[-Any]
[-Timeout <Int32>]
[-Force]
[-State] <JobState>
[<CommonParameters>]
Wait-Job
[-Any]
[-Timeout <Int32>]
[-Force]
[-Filter] <Hashtable>
[<CommonParameters>]
Description
cmdlet은 Wait-Job
실행을 계속하기 전에 작업이 종료 상태가 될 때까지 기다립니다.
종료 상태는 다음과 같습니다.
- Completed
- 실패
- 중지됨
- 일시 중단
- 연결 끊김
지정된 작업 또는 모든 작업이 종료 상태가 될 때까지 기다릴 수 있습니다. Timeout 매개 변수를 사용하여 작업에 대한 최대 대기 시간을 설정하거나 Force 매개 변수를 사용하여 또는 Disconnected
상태의 Suspended
작업을 대기할 수도 있습니다.
작업의 명령이 완료되면 Wait-Job
작업 개체를 반환하고 실행을 계속합니다.
cmdlet을 Wait-Job
사용하여 cmdlet 또는 cmdlet의 Invoke-Command
AsJob 매개 변수를 사용하여 Start-Job
시작된 작업을 기다릴 수 있습니다. 작업에 대한 자세한 내용은 about_Jobs를 참조하세요.
Windows PowerShell 3.0 Wait-Job
부터 cmdlet은 워크플로 작업 및 예약된 작업의 인스턴스와 같은 사용자 지정 작업 유형도 기다립니다. Wait-Job
특정 형식의 작업을 대기하려면 cmdlet을 사용하거나 모듈에서 cmdlet을 사용 Import-Module
하거나 가져와서 cmdlet을 실행 Get-Job
하기 전에 사용자 지정 작업 유형을 지원하는 모듈을 세션으로 가져옵니다. 특정 사용자 지정 작업 유형에 대한 자세한 내용은 사용자 지정 작업 유형 기능의 설명서를 참조하세요.
예제
예제 1: 모든 작업 대기
Get-Job | Wait-Job
이 명령은 세션에서 실행 중인 모든 작업이 완료되기를 기다립니다.
예제 2: Start-Job을 사용하여 원격 컴퓨터에서 작업이 시작될 때까지 기다립니다.
$s = New-PSSession Server01, Server02, Server03
Invoke-Command -Session $s -ScriptBlock {Start-Job -Name Date1 -ScriptBlock {Get-Date}}
$done = Invoke-Command -Session $s -Command {Wait-Job -Name Date1}
$done.Count
3
이 예제에서는 cmdlet을 Wait-Job
사용하여 원격 컴퓨터에서 시작된 작업으로 cmdlet을 Start-Job
사용하는 방법을 보여줍니다. 명령과 Wait-Job
명령 모두 Start-Job
cmdlet을 사용하여 Invoke-Command
원격 컴퓨터에 제출됩니다.
이 예제에서는 Wait-Job
세 개의 다른 컴퓨터에서 작업으로 실행 중인 명령이 완료되었는지 여부를 Get-Date
확인합니다.
첫 번째 명령은 세 개의 원격 컴퓨터 각각에 Windows PowerShell 세션(PSSession)을 만들고 변수에 $s
저장합니다.
두 번째 명령은 .의 세 세션 각각에서 $s
실행하는 Start-Job
데 사용합니다Invoke-Command
.
모든 작업의 이름은 Date1입니다.
세 번째 명령은 .를 실행하는 Wait-Job
데 사용합니다Invoke-Command
. 이 명령은 각 컴퓨터의 Date1
작업이 완료되기를 기다립니다. 변수에 작업 개체의 결과 컬렉션(배열)을 $done
저장합니다.
네 번째 명령은 변수에 있는 작업 개체 배열의 Count 속성을 사용하여 완료된 작업 수를 결정합니다$done
.
예제 3: 첫 번째 작업이 완료되는 시기 결정
$s = New-PSSession -ComputerName (Get-Content -Path .\Machines.txt)
$c = 'Get-EventLog -LogName System | Where-Object {$PSItem.EntryType -eq "error" --and $PSItem.Source -eq "LSASRV"} | Out-File -FilePath Errors.txt'
Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {$Using:c}
Invoke-Command -Session $s -ScriptBlock {Wait-Job -Any}
이 예제에서는 Any 매개 변수 Wait-Job
를 사용하여 현재 세션에서 실행 중인 여러 작업의 첫 번째 작업이 종료 상태인지 확인합니다. 또한 cmdlet을 Wait-Job
사용하여 원격 작업이 완료될 때까지 기다리는 방법을 보여줍니다.
첫 번째 명령은 Machines.txt 파일에 나열된 각 컴퓨터에 PSSession을 만들고 PSSession 개체를 변수에 $s
저장합니다. 이 명령은 cmdlet을 Get-Content
사용하여 파일의 내용을 가져옵니다. Get-Content
명령은 명령 앞에 New-PSSession
실행되도록 괄호로 묶습니다.
두 번째 명령은 명령 문자열을 Get-EventLog
따옴표로 변수에 $c
저장합니다.
세 번째 명령은 cmdlet을 사용하여 Invoke-Command
의 각 세션에서 $s
실행됩니다Start-Job
.
이 Start-Job
명령은 변수에서 $c
명령을 실행하는 Get-EventLog
작업을 시작합니다.
이 명령은 Using 범위 한정자를 사용하여 변수가 $c
로컬 컴퓨터에 정의되었음을 나타냅니다. Using 범위 한정자는 Windows PowerShell 3.0에서 도입되었습니다. 사용 범위 한정자에 대한 자세한 내용은 about_Remote_Variables 참조하세요.
네 번째 명령은 세션에서 명령을 실행하는 Wait-Job
데 사용합니다Invoke-Command
. Any 매개 변수를 사용하여 원격 컴퓨터의 첫 번째 작업이 종료될 때까지 기다립니다.
예제 4: 원격 컴퓨터의 작업에 대한 대기 시간 설정
PS> $s = New-PSSession -ComputerName Server01, Server02, Server03
PS> $jobs = Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {Get-Date}}
PS> $done = Invoke-Command -Session $s -ScriptBlock {Wait-Job -Timeout 30}
PS>
이 예제에서는 Timeout 매개 변수 Wait-Job
를 사용하여 원격 컴퓨터에서 실행되는 작업에 대한 최대 대기 시간을 설정하는 방법을 보여줍니다.
첫 번째 명령은 세 개의 원격 컴퓨터(Server01, Server02 및 Server03)에 각각 PSSession을 만든 다음 PSSession 개체를 변수에 $s
저장합니다.
두 번째 명령은 .의 각 PSSession 개체에서 $s
실행하는 Start-Job
데 사용합니다Invoke-Command
. 결과 작업 개체를 변수에 $jobs
저장합니다.
세 번째 명령은 .의 각 세션에서 $s
실행하는 Wait-Job
데 사용합니다Invoke-Command
. 이 Wait-Job
명령은 모든 명령이 30초 이내에 완료되었는지 여부를 결정합니다. 값이 30인 Timeout 매개 변수를 사용하여 최대 대기 시간을 설정한 다음, 명령 결과를 변수에 $done
저장합니다.
이 경우 30초 후에 Server02 컴퓨터의 명령만 완료됩니다. Wait-Job
대기를 종료하고 완료된 작업을 나타내는 개체를 반환하고 명령 프롬프트를 표시합니다.
변수에는 $done
Server02에서 실행된 작업을 나타내는 작업 개체가 포함됩니다.
예제 5: 여러 작업 중 하나가 완료될 때까지 기다립니다.
Wait-Job -id 1,2,5 -Any
이 명령은 ID로 세 개의 작업을 식별하고 그 중 하나가 종료 상태에 있게 될 때까지 기다립니다. 첫 번째 작업이 완료되면 실행이 계속됩니다.
예제 6: 기간 동안 기다린 다음 백그라운드에서 작업을 계속하도록 허용
Wait-Job -Name "DailyLog" -Timeout 120
이 명령은 DailyLog 작업이 완료되기까지 120초(2분) 기다립니다. 다음 2분 동안 작업이 완료되지 않으면 실행이 계속되고 백그라운드에서 작업이 계속 실행됩니다.
예제 7: 이름으로 작업 대기
Wait-Job -Name "Job3"
이 명령은 작업 이름을 사용하여 대기할 작업을 식별합니다.
예제 8: 시작 작업으로 시작된 로컬 컴퓨터의 작업 대기
$j = Start-Job -ScriptBlock {Get-ChildItem -Filter *.ps1| Where-Object {$PSItem.LastWriteTime -gt ((Get-Date) - (New-TimeSpan -Days 7))}}
$j | Wait-Job
이 예제에서는 를 사용하여 로컬 컴퓨터에서 Wait-Job
시작된 작업으로 cmdlet을 사용하는 Start-Job
방법을 보여줍니다.
이 명령은 지난주에 추가 또는 업데이트된 Windows PowerShell 스크립트 파일을 가져오는 작업을 시작합니다.
첫 번째 명령은 로컬 컴퓨터에서 작업을 시작하는 데 사용합니다 Start-Job
. 이 작업은 지난 주에 추가되거나 업데이트된 .ps1 파일 이름 확장명이 있는 모든 파일을 가져오는 명령을 실행 Get-ChildItem
합니다.
세 번째 명령은 작업이 종료 상태가 될 때까지 대기하는 데 사용합니다 Wait-Job
. 작업이 완료되면 이 명령은 작업에 대한 정보를 포함하는 작업 개체를 표시합니다.
예제 9: Invoke-Command를 사용하여 원격 컴퓨터에서 작업이 시작될 때까지 기다립니다.
$s = New-PSSession -ComputerName Server01, Server02, Server03
$j = Invoke-Command -Session $s -ScriptBlock {Get-Process} -AsJob
$j | Wait-Job
이 예제에서는 AsJob 매개 변수Invoke-Command
를 사용하여 원격 컴퓨터에서 시작된 작업과 함께 사용하는 Wait-Job
방법을 보여줍니다. AsJob을 사용하는 경우 작업이 로컬 컴퓨터에 만들어지고 작업이 원격 컴퓨터에서 실행되는 경우에도 결과가 자동으로 로컬 컴퓨터로 반환됩니다.
이 예제에서는 Wait-Job
세 원격 컴퓨터의 세션에서 실행 중인 명령이 종료 상태인지 여부를 Get-Process
확인합니다.
첫 번째 명령은 세 대의 컴퓨터에 PSSession 개체를 만들고 변수에 $s
저장합니다.
두 번째 명령은 .의 세 세션 각각에서 $s
실행하는 Get-Process
데 사용합니다Invoke-Command
.
이 명령은 AsJob 매개 변수를 사용하여 명령을 작업으로 비동기적으로 실행합니다. 이 명령은 작업 개체를 사용하여 Start-Job
시작한 작업과 마찬가지로 반환하고 작업 개체는 변수에 $j
저장됩니다.
세 번째 명령은 파이프라인 연산자(|
)를 사용하여 작업 개체를 cmdlet에 $j
Wait-Job
보냅니다. Invoke-Command
이 경우 작업이 로컬 컴퓨터에 있기 때문에 명령이 필요하지 않습니다.
예제 10: ID가 있는 작업을 기다립니다.
Get-Job
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
1 Job1 Completed True localhost,Server01.. get-service
4 Job4 Completed True localhost dir | where
Wait-Job -Id 1
이 명령은 ID 값이 1인 작업을 기다립니다.
매개 변수
-Any
이 cmdlet은 작업 개체를 반환하고 작업이 완료되면 실행을 계속한다는 것을 나타냅니다. 기본적으로 Wait-Job
지정된 작업이 모두 완료될 때까지 기다렸다가 프롬프트를 표시합니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Filter
조건의 해시 테이블을 지정합니다. 이 cmdlet은 해시 테이블의 모든 조건을 충족하는 작업을 기다립니다. 키가 작업 속성이고 값이 작업 속성 값인 해시 테이블을 입력합니다.
이 매개 변수는 워크플로 작업, 예약된 작업 등의 사용자 지정 작업 유형에서만 적용됩니다. cmdlet을 사용하여 만든 작업과 같은 표준 작업에서는 Start-Job
작동하지 않습니다. 이 매개 변수 지원에 대한 자세한 내용은 작업 유형 도움말 항목을 참조하세요.
이 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.
형식: | Hashtable |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-Force
이 cmdlet이 일시 중단됨 또는 연결 끊김 상태에서 작업을 계속 대기하고 있음을 나타냅니다. 기본적으로 Wait-Job
작업이 다음 상태 중 하나에 있는 경우 대기를 반환하거나 종료합니다.
- Completed
- 실패
- 중지됨
- 일시 중단
- 연결 끊김
이 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Id
이 cmdlet이 대기하는 작업의 ID 배열을 지정합니다.
ID는 현재 세션의 작업을 고유하게 식별하는 정수입니다. 인스턴스 ID보다 기억하고 입력하는 것이 더 쉽지만 현재 세션에서만 고유합니다. 하나 이상의 ID를 쉼표로 구분하여 입력할 수 있습니다. 작업의 ID를 찾으려면 .를 입력합니다 Get-Job
.
형식: | Int32[] |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-InstanceId
이 cmdlet이 대기하는 작업의 인스턴스 ID 배열을 지정합니다. 기본값은 모든 작업입니다.
인스턴스 ID는 컴퓨터에서 작업을 고유하게 식별하는 GUID입니다. 작업의 인스턴스 ID를 찾으려면 .를 사용합니다 Get-Job
.
형식: | Guid[] |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-Job
이 cmdlet이 대기하는 작업을 지정합니다. 작업 개체가 포함된 변수 또는 작업 개체를 가져오는 명령을 입력하세요. 파이프라인 연산자를 사용하여 cmdlet에 작업 개체를 Wait-Job
보낼 수도 있습니다. 기본적으로 Wait-Job
현재 세션에서 만든 모든 작업을 기다립니다.
형식: | Job[] |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-Name
이 cmdlet이 대기하는 작업의 이름을 지정합니다.
형식: | String[] |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-State
작업 상태를 지정합니다. 이 cmdlet은 지정된 상태의 작업에 대해서만 대기합니다. 이 매개 변수에 허용되는 값은 다음과 같습니다.
- NotStarted
- 실행 중
- Completed
- 실패
- 중지됨
- 차단됨
- 일시 중단
- 연결 끊김
- Suspending
- 중지 중
작업 상태에 대한 자세한 내용은 JobState 열거형을 참조 하세요.
형식: | JobState |
허용되는 값: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-Timeout
각 작업에 대한 최대 대기 시간(초)을 지정합니다. 기본값 -1은 cmdlet이 작업이 완료될 때까지 대기한다는 것을 나타냅니다. 타이밍은 명령이 아닌 명령을 제출할 Wait-Job
때 시작됩니다 Start-Job
.
이 시간을 초과하면 작업이 계속 실행되더라도 대기가 종료되고 실행이 계속됩니다. 명령에 오류 메시지가 표시되지 않습니다.
형식: | Int32 |
별칭: | TimeoutSec |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
입력
System.Management.Automation.RemotingJob
작업 개체를 이 cmdlet으로 파이프할 수 있습니다.
출력
System.Management.Automation.PSRemotingJob
이 cmdlet은 종료 상태의 작업을 나타내는 작업 개체를 반환합니다. Timeout 매개 변수의 값이 초과되어 대기가 종료되면 Wait-Job
개체를 반환하지 않습니다.
참고
PowerShell에는 다음 별칭이 포함됩니다.Wait-Job
- 모든 플랫폼:
wjb
기본적으로 Wait-Job
작업이 다음 상태 중 하나에 있는 경우 대기를 반환하거나 종료합니다.
- Completed
- 실패
- 중지됨
- 일시 중단
- 연결 끊김
Wait-Job
일시 중단 및 연결이 끊긴 작업을 계속 기다리려면 Force 매개 변수를 사용합니다.
관련 링크
PowerShell