Write-Progress
Отображает индикатор выполнения в командном окне PowerShell.
Синтаксис
Write-Progress
[-Activity] <String>
[[-Status] <String>]
[[-Id] <Int32>]
[-PercentComplete <Int32>]
[-SecondsRemaining <Int32>]
[-CurrentOperation <String>]
[-ParentId <Int32>]
[-Completed]
[-SourceId <Int32>]
[<CommonParameters>]
Описание
Командлет Write-Progress
отображает индикатор выполнения в командном окне Windows PowerShell, в котором отображается состояние выполняемой команды или скрипта.
Можно выбрать параметры, которые отражает индикатор, а также текст, который отображается сверху и снизу от индикатора выполнения.
Примеры
Пример 1. Отображение хода выполнения цикла For
for ($i = 1; $i -le 100; $i++ )
{
Write-Progress -Activity "Search in Progress" -Status "$i% Complete:" -PercentComplete $i;
}
Эта команда отображает ход выполнения цикла For, который выполняет счет от 1 до 100.
Командлет Write-Progress
содержит заголовок Activity
строки состояния, строку состояния и переменную $i
(счетчик в цикле For), которая указывает относительную полноту задачи.
Пример 2. Отображение хода выполнения вложенных циклов For
for($I = 1; $I -lt 101; $I++ )
{
Write-Progress -Activity Updating -Status 'Progress->' -PercentComplete $I -CurrentOperation OuterLoop
for($j = 1; $j -lt 101; $j++ )
{
Write-Progress -Id 1 -Activity Updating -Status 'Progress' -PercentComplete $j -CurrentOperation InnerLoop
}
}
Updating
Progress ->
[ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo]
OuterLoop
Updating
Progress
[oooooooooooooooooo ]
InnerLoop
В этом примере показан ход выполнения двух вложенных циклов For, каждый из которых представлен индикатором выполнения.
Команда Write-Progress
для второго индикатора выполнения содержит параметр Id , который отличает его от первого индикатора выполнения.
Без параметра Id индикаторы выполнения будут накладываться друг на друга, а не отображаться друг под другом.
Пример 3. Отображение хода выполнения при поиске строки
# Use Get-EventLog to get the events in the System log and store them in the $Events variable.
$Events = Get-EventLog -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 a 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
# 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 ($i/$Events.count*100)
} -End {
# Display the matching messages using the out variable.
$out
}
Эта команда отображает ход выполнения команды для поиска строки "bios" в журнале системных событий.
Значение параметра PercentComplete вычисляется путем деления количества обработанных $I
событий на общее число полученных $Events.count
событий, а затем умножения этого результата на 100.
Параметры
-Activity
Указывает первую строку текста в заголовке над индикатором состояния. Этот текст описывает действие, выполнение которого отражает индикатор.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Completed
Указывает, отображается ли индикатор выполнения.
Если этот параметр опущен, Write-Progress
отображает сведения о ходе выполнения.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CurrentOperation
Задает строку текста под индикатором выполнения. Этот текст описывает операцию, которая выполняется в данный момент.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
Указывает идентификатор, который позволяет отличить отдельный индикатор выполнения от других индикаторов. Используйте этот параметр при создании нескольких индикаторов выполнения в рамках одной команды. Если у индикаторов выполнения нет отличающихся идентификаторов, они будут наложены друг на друга вместо отображения по порядку.
Type: | Int32 |
Position: | 3 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ParentId
Указывает родительское действие текущего действия. Используйте значение -1, если текущее действие не имеет родительского действия.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PercentComplete
Указывает процент завершения действия. Используйте значение -1, если процент выполнения неизвестен или неприменим.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SecondsRemaining
Указывает предполагаемое количество секунд, оставшихся до завершения действия. Используйте значение -1, если число оставшихся секунд неизвестно или неприменимо.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SourceId
Указывает источник записи.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Status
Указывает вторую строку текста в заголовке над индикатором состояния. Этот текст описывает текущее состояние действия.
Type: | String |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Входные данные
None
В этот командлет нельзя передать входные данные.
Выходные данные
None
Write-Progress
не создает никаких выходных данных.
Примечания
Если индикатор выполнения не отображается, проверка значение переменной$ProgressPreference
. Если установлено значение SilentlyContinue, индикатор выполнения не отображаются. Дополнительные сведения о параметрах Windows PowerShell см. в разделе about_Preference_Variables.
Параметры командлета соответствуют свойствам класса System.Management.Automation.ProgressRecord . Дополнительные сведения см. в разделе ProgressRecord Class в библиотеке MSDN.