PowerShell Logo Small

Write-Progress



This is the built-in help made by Microsoft for the command 'Write-Progress', in PowerShell version 2 - as retrieved from Windows version 'Microsoft® Windows Vista™ Ultimate ' PowerShell help files on 2016-06-23.

For PowerShell version 3 and up, where you have Update-Help, this command was run just before creating the web pages from the help files.

SYNOPSIS

Displays a progress bar within a Windows PowerShell command window.

SYNTAX


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



Search powershellhelp.space

DESCRIPTION


The Write-Progress cmdlet displays a progress bar in a Windows PowerShell command window that depicts the status of a running command or script.
You can select the indicators that the bar reflects and the text that appears above and below the progress bar.



<

RELATED LINKS

Online version: http://go.microsoft.com/fwlink/?LinkID=113428
Write-Verbose
Write-Error
Write-Host
Write-Debug
Write-Output
Write-Warning

REMARKS

<

Examples


-------------------------- EXAMPLE 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;}



Description
-----------
This command displays the progress of two nested For loops. The first loop counts to 100. For each increment of that loop, the second loop counts
to 10,000.
The Write-Progress command includes a status bar heading ("activity"), a status line, and the variable $i (the counter in the For loop), which in
dicates the relative completeness of the task.








-------------------------- EXAMPLE 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



Description
-----------
This example displays the progress of two nested For loops, each of which is represented by a progress bar.

The Write-Progress command for the second progress bar includes the Id parameter that distinguishes it from the first progress bar. Without the I
d parameter, the progress bars would be superimposed on each other instead of being displayed one below the other.








-------------------------- EXAMPLE 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}



Description
-----------
This command displays the progress of a command to find the string "bios" in the System event log.

In the first line of the command, the Get-EventLog cmdlet gets the events in the System log and stores them in the $events variable.

In the second line, the events are piped to the ForEach-Object cmdlet. Before processing begins, the Clear-Host cmdlet is used to clear the scree
n, the $i counter variable is set to zero, and the $out output variable is set to the empty string.


In the third line, which is the Process script block of the ForEach-Object cmdlet, the cmdlet searches the message property of each incoming obje
ct for "bios". If the string is found, the message is added to $out.

In the fourth line, the $i counter variable is incremented to record that another event has been examined.

The fifth line uses the Write-Progress cmdlet with values for the Activity and Status text fields that create the first and second lines of the p
rogress bar heading, respectively. The PercentComplete parameter value is calculated by dividing the number of events that have been processed ($
i) by the total number of events retrieved ($events.count) and then multiplying that result by 100.

In the last line, the End parameter of the ForEach-Object cmdlet is used to display the messages that are stored in the $out variable.