Write-Progress
PowerShell 명령 창 내에 진행률 표시줄을 표시합니다.
구문
Default (기본값)
Write-Progress
[[-Activity] <String>]
[[-Status] <String>]
[[-Id] <Int32>]
[-PercentComplete <Int32>]
[-SecondsRemaining <Int32>]
[-CurrentOperation <String>]
[-ParentId <Int32>]
[-Completed]
[-SourceId <Int32>]
[<CommonParameters>]
Description
Write-Progress cmdlet은 실행 중인 명령 또는 스크립트의 상태를 보여 주는 PowerShell 명령 창에 진행률 표시줄을 표시합니다. 막대가 반영하는 표시기와 진행률 표시줄 위와 아래에 표시되는 텍스트를 선택할 수 있습니다.
PowerShell 7.2는 POWERShell이 ANSI 이스케이프 시퀀스를 사용하여 특정 정보를 표시하는 방법을 제어하는 데 사용되는 $PSStyle 자동 변수를 추가했습니다.
$PSStyle.Progress 멤버를 사용하면 진행률 보기 표시줄 렌더링을 제어할 수 있습니다.
-
$PSStyle.Progress.Style- 렌더링 스타일을 설정하는 ANSI 문자열입니다. -
$PSStyle.Progress.MaxWidth- 뷰의 최대 너비를 설정합니다. 기본값은120입니다. 최소값은 18입니다. -
$PSStyle.Progress.View- 값,Minimal및Classic있는 열거형입니다.Classic변경 없이 기존 렌더링입니다.Minimal한 줄 최소 렌더링입니다.Minimal기본값입니다.
$PSStyle대한 자세한 내용은 about_ANSI_Terminals.md참조하세요.
비고
호스트가 가상 터미널을 지원하지 않으면 $PSStyle.Progress.View 자동으로 Classic설정됩니다.
예제
예제 1: 'for' 루프의 진행률 표시
for ($i = 1; $i -le 100; $i++ ) {
Write-Progress -Activity "Search in Progress" -Status "$i% Complete:" -PercentComplete $i
Start-Sleep -Milliseconds 250
}
이 명령은 1에서 100까지 계산되는 for 루프의 진행률을 표시합니다.
Write-Progress cmdlet에는 상태 표시줄 머리글 Activity, 상태 줄 및 변수 $i(for 루프의 카운터)가 포함되어 있으며 이는 작업의 상대적 완성도를 나타냅니다.
예제 2: 중첩된 'for' 루프의 진행률 표시
$PSStyle.Progress.View = 'Classic'
for($I = 0; $I -lt 10; $I++ ) {
$OuterLoopProgressParameters = @{
Activity = 'Updating'
Status = 'Progress->'
PercentComplete = $I * 10
CurrentOperation = 'OuterLoop'
}
Write-Progress @OuterLoopProgressParameters
for($j = 1; $j -lt 101; $j++ ) {
$InnerLoopProgressParameters = @{
ID = 1
Activity = 'Updating'
Status = 'Inner Progress'
PercentComplete = $j
CurrentOperation = 'InnerLoop'
}
Write-Progress @InnerLoopProgressParameters
Start-Sleep -Milliseconds 25
}
}
Updating
Progress ->
[ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo]
OuterLoop
Updating
Inner Progress
[oooooooooooooooooo ]
InnerLoop
다음은 진행률 보기를 Classic 설정한 다음, 각각 진행률 표시줄로 표시되는 두 개의 중첩된 for 루프의 진행률을 표시하는 예제입니다.
두 번째 진행률 표시줄에 대한 Write-Progress 명령에는 첫 번째 진행률 표시줄과 구분하는 Id 매개 변수가 포함됩니다.
Id 매개 변수가 없으면 진행률 표시줄이 다른 매개 변수 아래에 표시되는 대신 서로 중첩됩니다.
비고
다음은 진행률 보기를 Classic설정하여 각 진행률 표시줄의 CurrentOperation 값을 표시하는 예제입니다. 진행률 보기가 Minimal설정되면 CurrentOperation 값이 표시되지 않습니다.
예제 3: 문자열을 검색하는 동안 진행률 표시
# Use Get-WinEvent to get the events in the System log and store them in the $Events variable.
$Events = Get-WinEvent -LogName System
# Pipe the events to the ForEach-Object cmdlet.
$Events | ForEach-Object -Begin {
# In the Begin block, use Clear-Host to clear the screen.
Clear-Host
# Set the $i counter variable to zero.
$i = 0
# Set the $out variable to an empty string.
$out = ""
} -Process {
# In the Process script block search the message property of each incoming object for "bios".
if($_.Message -like "*bios*")
{
# Append the matching message to the out variable.
$out=$out + $_.Message
}
# Increment the $i counter variable which is used to create the progress bar.
$i = $i+1
# Determine the completion percentage
$Completed = ($i/$Events.Count) * 100
# Use Write-Progress to output a progress bar.
# The Activity and Status parameters create the first and second lines of the progress bar
# heading, respectively.
Write-Progress -Activity "Searching Events" -Status "Progress:" -PercentComplete $Completed
} -End {
# Display the matching messages using the out variable.
$out
}
이 명령은 시스템 이벤트 로그에서 문자열 "bios"를 찾는 명령의 진행률을 표시합니다.
PercentComplete 매개 변수 값은 $i 처리된 이벤트 수를 검색된 총 이벤트 수로 나눈 다음 $Events.Count 100을 곱하여 계산됩니다.
예제 4: 중첩된 프로세스의 각 수준에 대한 진행률 표시
$PSStyle.Progress.View = 'Classic'
foreach ( $i in 1..10 ) {
Write-Progress -Id 0 "Step $i"
foreach ( $j in 1..10 ) {
Write-Progress -Id 1 -ParentId 0 "Step $i - Substep $j"
foreach ( $k in 1..10 ) {
Write-Progress -Id 2 -ParentId 1 "Step $i - Substep $j - iteration $k"
Start-Sleep -Milliseconds 150
}
}
}
Step 1
Processing
Step 1 - Substep 2
Processing
Step 1 - Substep 2 - Iteration 3
Processing
이 예제에서는 ParentId 매개 변수를 사용하여 출력을 들여쓰기하여 각 단계의 진행 중인 부모-자식 관계를 표시할 수 있습니다.
매개 변수
-Activity
상태 표시줄 위의 제목에 있는 텍스트의 첫 번째 줄을 지정합니다. 이 텍스트에서는 진행률이 보고되는 활동을 설명합니다.
매개 변수 속성
| 형식: | String |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | 0 |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-Completed
진행률 표시줄이 표시되는지 여부를 나타냅니다. 이 매개 변수를 생략하면 Write-Progress 진행률 정보를 표시합니다.
매개 변수 속성
| 형식: | SwitchParameter |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-CurrentOperation
Classic 진행률 보기의 진행률 표시줄 아래에 있는 텍스트 줄을 지정합니다. 이 텍스트에서는 현재 수행 중인 작업에 대해 설명합니다. 진행률 보기가 Minimal설정되면 이 매개 변수는 적용되지 않습니다.
매개 변수 속성
| 형식: | String |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-Id
각 진행률 표시줄을 다른 진행률 표시줄과 구분하는 ID를 지정합니다. 단일 명령에서 둘 이상의 진행률 표시줄을 만들 때 이 매개 변수를 사용합니다. 진행률 표시줄에 다른 ID가 없으면 계열에 표시되는 대신 중첩됩니다. 음수 값은 허용되지 않습니다.
매개 변수 속성
| 형식: | Int32 |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | 2 |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-ParentId
현재 활동의 부모 활동을 지정합니다. 현재 활동에 부모 활동이 없는 경우 -1 값을 사용합니다.
매개 변수 속성
| 형식: | Int32 |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-PercentComplete
완료된 활동의 백분율을 지정합니다. 완료율을 알 수 없거나 적용할 수 없는 경우 -1 값을 사용합니다.
매개 변수 속성
| 형식: | Int32 |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-SecondsRemaining
작업이 완료될 때까지 남은 예상 시간(초)을 지정합니다. 남은 시간(초)을 알 수 없거나 적용할 수 없는 경우 -1 값을 사용합니다.
매개 변수 속성
| 형식: | Int32 |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-SourceId
레코드의 원본을 지정합니다. ID 대신 사용할 수 있지만 ParentId같은 다른 매개 변수에는 사용할 수 없습니다.
매개 변수 속성
| 형식: | Int32 |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-Status
상태 표시줄 위의 제목에 있는 두 번째 텍스트 줄을 지정합니다. 이 텍스트는 활동의 현재 상태를 설명합니다.
매개 변수 속성
| 형식: | String |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | 1 |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
CommonParameters
이 cmdlet은 일반적인 매개 변수인 -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction 및 -WarningVariable 매개 변수를 지원합니다. 자세한 내용은 about_CommonParameters를 참조하세요.
입력
None
개체를 이 cmdlet에 파이프로 연결할 수 없습니다.
출력
None
이 cmdlet은 출력을 반환하지 않습니다.
참고
진행률 표시줄이 표시되지 않으면 $ProgressPreference 변수의 값을 확인합니다. 값이 SilentlyContinue설정되면 진행률 표시줄이 표시되지 않습니다. PowerShell 기본 설정에 대한 자세한 내용은 about_Preference_Variables참조하세요.
cmdlet의 매개 변수는 System.Management.Automation.ProgressRecord 클래스의 속성에 해당합니다. 자세한 내용은 ProgressRecord 클래스참조하세요.