Write-Progress
Отображает индикатор выполнения в окне командной строки PowerShell.
Синтаксис
Default (по умолчанию)
Write-Progress
[[-Activity] <String>]
[[-Status] <String>]
[[-Id] <Int32>]
[-PercentComplete <Int32>]
[-SecondsRemaining <Int32>]
[-CurrentOperation <String>]
[-ParentId <Int32>]
[-Completed]
[-SourceId <Int32>]
[<CommonParameters>]
Описание
Командлет Write-Progress
отображает индикатор хода выполнения в окне командной строки PowerShell, в котором показано состояние выполняемой команды или скрипта. Вы можете выбрать индикаторы, отражающие панель, и текст, отображаемый выше и под индикатором выполнения.
PowerShell 7.2 добавила $PSStyle
автоматическую переменную, используемую для управления отображением определенных сведений с помощью escape-последовательностей ANSI. Элемент $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
}
Эта команда отображает ход выполнения цикла for
, который подсчитывает от 1 до 100.
Командлет Write-Progress
включает заголовок строки состояния 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, который отличает его от первой панели хода выполнения.
Без параметра идентификатора индикаторы хода выполнения будут заменены друг на друга, а не отображаются под другим.
Замечание
В этом примере представление хода выполнения задает значение 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
Указывает идентификатор, который отличает каждый индикатор выполнения от других. Используйте этот параметр при создании нескольких индикаторов выполнения в одной команде. Если индикаторы хода выполнения не имеют разных идентификаторов, они заменяются вместо отображения в серии. Отрицательные значения не допускаются.
Свойства параметра
Тип: | 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
Указывает источник записи. Это можно использовать вместо идентификатора, но его нельзя использовать с другими параметрами, такими как 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
Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.
Входные данные
None
Невозможно передать объекты в этот командлет.
Выходные данные
None
Этот командлет не возвращает выходные данные.
Примечания
Если индикатор выполнения не отображается, проверьте значение переменной $ProgressPreference
. Если для параметра задано значение SilentlyContinue
, индикатор выполнения не отображается. Дополнительные сведения о параметрах PowerShell см. в about_Preference_Variables.
Параметры командлета соответствуют свойствам класса System.Management.Automation.ProgressRecord. Дополнительные сведения см. в классе ProgressRecord.