Отображает индикатор выполнения в командном окне Windows PowerShell.

Синтаксис

Write-Progress [-Activity] <string> [-Status] <string> [[-Id] <int>] [-Completed] [-CurrentOperation <string>] [-ParentId <int>] [-PercentComplete <int>] [-SecondsRemaining <int>] [-SourceId <int>] [<CommonParameters>]

Описание

Командлет Write-Progress отображает в командном окне Windows PowerShell индикатор выполнения, который показывает состояние выполнения команды или скрипта. Можно выбирать показатели, отображаемые индикатором, а также текст, который отображается до и после индикатора выполнения.

Параметры

-Activity <string>

Задает первую строку текста в заголовке над индикатором состояния. Этот текст описывает действие, выполнение которого отслеживается.

Обязательно?

true

Позиция?

1

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Completed

Определяет, видим ли индикатор выполнения. Если пропустить этот параметр, командлет Write-Progress отобразит сведения о ходе выполнения.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-CurrentOperation <string>

Задает строку текста, отображаемую под индикатором выполнения. Этот текст описывает текущую операцию.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Id <int>

Задает идентификатор, который позволяет отличать данный индикатор выполнения от других. Используйте этот параметр при создании в одной команде нескольких индикаторов выполнения. Если у индикаторов выполнения не будет различающихся идентификаторов, то они будут накладываться друг на друга, а не отображаться последовательно.

Обязательно?

false

Позиция?

3

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-ParentId <int>

Определяет родительское действие текущего действия. Используйте значение -1, если у текущего действия нет родительского действия.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-PercentComplete <int>

Задает процент выполнения операции. Используйте значение -1, если процент выполнения неизвестен или неприменим.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-SecondsRemaining <int>

Задает предполагаемое число секунд, оставшихся до завершения действия. Используйте значение -1, если оставшееся число секунд неизвестно или неприменимо.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-SourceId <int>

Определяет источник записи.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Status <string>

Задает вторую строку текста в заголовке над индикатором состояния. Этот текст описывает текущее состояние действия.

Обязательно?

true

Позиция?

2

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

<CommonParameters>

Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.

Ввод и вывод

Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.

Входные данные

Нет

Передать входные данные этому командлету по конвейеру невозможно.

Выходные данные

Нет

Командлет Write-Progress не формирует никакого вывода.

Примечания

Если индикатор выполнения не появляется, проверьте значение переменной $ProgressPreference. Если она имеет значение SilentlyContinue, индикатор выполнения на экране не отображается. Дополнительные сведения о параметрах Windows PowerShell см. в разделе about_Preference_Variables.

Параметры этого командлета соответствуют свойствам класса ProgressRecord (System.Management.Automation.ProgressRecord). Дополнительные сведения см. в разделе ProgressRecord пакета средств разработки программного обеспечения (SDK) Windows PowerShell.

Пример 1

C:\PS>for ($i = 1; $i -lt 101; $i++ ) 
{for ($j=0;$j -lt 10000;$j++) {} write-progress -activity "Search in Progress" -status "% Complete:" -percentcomplete $i;}

Описание
-----------
Эта команда отображает сведения о ходе выполнения двух вложенных циклов For. Число итераций первого цикла равно 100. В рамках каждой итерации этого цикла второй цикл выполняется 10000 раз.
Команда Write-Progress включает заголовок панели состояния ("activity"), строку состояния и переменную $i (счетчик цикла For), которая позволяет получить сведения о степени завершенности задания.






Пример 2

C:\PS>for($i = 1; $i -lt 101; $i++ ) {write-progress -activity Updating -status progress-> -percentcomplete $i -currentOperation OuterLoop} for($i = 1; $i -lt 101; $i++ ) {write-progress -activity Updating -status progress -percentcomplete $i -id  1 -currentOperation InnerLoop}

Updating 
   progress ->
   [oooooooooooooooooo                                                   ]

   OutsideLoop

Updating
  progress  
  [oooooooooooooooooo                                                    ]

  InnerLoop

Описание
-----------
В этом примере показан ход выполнения двух вложенных циклов For, каждый из которых представлен индикатором выполнения.

Команда Write-Progress для второго индикатора выполнения включает параметр Id, который позволяет отличать этот индикатор от первого индикатора выполнения. Без параметра Id индикаторы выполнения накладывались бы друг на друга, а не располагались бы один под другим.






Пример 3

C:\PS>$events = get-eventlog -logname system

C:\PS> $events | foreach-object -begin {clear-host;$i=0;$out=""} `
-process {if($_.message -like "*bios*") {$out=$out + $_.Message};
$i = $i+1;`
write-progress -activity "Searching Events" `
-status "Progress:" -percentcomplete ($i/$events.count*100)} `
-end {$out}

Описание
-----------
Эта команда отображает сведения о ходе выполнения команды, ищущей строку "bios" в журнале событий "Система". 

В первой строке команды командлет Get-EventLog получает события из журнала "Система" и сохраняет их в переменной $events. 

Во второй строке события передаются по конвейеру командлету ForEach-Object. Перед началом обработки командлет Clear-Host очищает экран; переменной-счетчику $i присваивается значение 0, а переменной вывода $out — пустая строка. 


В третьей строке, которая представляет собой блок скрипта Process командлета ForEach-Object, командлет ищет слово "bios" в свойстве message каждого из объектов на входе. Если такая строка найдена, соответствующее сообщение добавляется в переменную $out. 

В четвертой строке увеличивается переменная-счетчик $i. Это показывает, что проверено еще одно событие. 

В пятой строке используется командлет Write-Progress со значениями текстовых полей Activity и Status, которые формируют соответственно первую и вторую строки заголовка индикатора выполнения. Для вычисления значения параметра PercentComplete число обработанных событий ($i) делится на общее число полученных событий ($events.count), а результат умножается на 100. 

В последней строке параметр End командлета ForEach-Object используется для отображения сообщений, которые были сохранены в переменной $out.






См. также




Содержание