Write-Progress

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>

ステータス バーの上の見出しに表示するテキストの 1 行目を指定します。このテキストは、進行状況が報告されているアクティビティを示します。

必須

true

位置

1

既定値

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

-Completed

進行状況を示すバーが表示されるかどうかを示します。このパラメーターを省略した場合、Write-Progress は進行状況情報を表示します。

必須

false

位置

named

既定値

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

-CurrentOperation <string>

進行状況バーの下に表示するテキストを指定します。このテキストは、現在実行されている操作を示します。

必須

false

位置

named

既定値

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

-Id <int>

各進行状況バーを他と区別する ID を指定します。1 つのコマンドに複数の進行状況バーを作成する場合は、このパラメーターを使用します。進行状況バーに別々の ID を指定しないと、並んで表示されるのではなく、重なって表示されます。

必須

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>

ステータス バーの上の見出しに表示するテキストの 2 行目を指定します。このテキストは、アクティビティの現在の状態を示します。

必須

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) のプロパティに対応しています。詳細については、Windows PowerShell Software Development Kit (SDK) の ProgressRecord に関するトピックを参照してください。

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

説明
-----------
このコマンドは、入れ子になった 2 つの For ループの進行状況を表示します。最初のループは 100 までカウントされます。そのループのインクリメントごとに、2 番目のループは 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

説明
-----------
この例は、入れ子になった 2 つの For ループの進行状況を表示します。それぞれの For ループは別個の進行状況バーで表されます。

2 番目の進行状況バーに対する 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 変数に保存します。

2 行目で、イベントはパイプを使用して ForEach-Object コマンドレットに渡されます。処理が開始される前に、Clear-Host コマンドレットを使用して画面がクリアされ、$i カウンター変数に 0 が設定され、$out 出力変数に空の文字列が設定されます。


ForEach-Object コマンドレットの Process スクリプト ブロックである 3 行目では、各入力オブジェクトのメッセージ プロパティに "bios" が含まれているかどうかを検索します。文字列が見つかった場合は、そのメッセージが $out に追加されます。

4 行目では、$i カウンター変数がインクリメントされ、イベントを 1 つ調べたことが記録されます。

5 行目は、進行状況バーの見出しの 1 行目と 2 行目になる Activity テキスト フィールドと Status テキスト フィールドの値を指定して Write-Progress コマンドレットを使用します。PercentComplete パラメーターの値は、処理したイベントの数 ($i) を取得したイベントの総数 ($events.count) で除算した結果に 100 を乗算して計算されています。

最後の行で、ForEach-Object コマンドレットの End パラメーターを使用して、$out 変数に格納されているメッセージを表示します。





関連項目

概念

Write-Verbose
Write-Error
Write-Host
Write-Debug
Write-Output
Write-Warning