PowerShell Cmdlet - Write-Progress
 記事記号:[mh1938] 初版:2011/Sep/30

この文書は、Windows PowerShellのヘルプ機能で表示される内容を再構成したものです。

名前
    Write-Progress
    
概要
    Windows PowerShell コマンド ウィンドウ内に進行状況を表すバーを表示します。
    
構文
    Write-Progress [-Activity] <string> [-Status] <string> [[-Id] <int>] [-Compl
    eted] [-CurrentOperation <string>] [-ParentId <int>] [-PercentComplete <int>
    ] [-SecondsRemaining <int>] [-SourceId <int>] [<CommonParameters>]
    
説明
    Write-Progress コマンドレットは、実行中のコマンドまたはスクリプトのステータ
    スを表す進行状況バーを Windows PowerShell コマンド ウィンドウに表示します。
    バーが示すインジケーター、および進行状況バーの上下に表示されるテキストを選
    択できます。
    
パラメーター
    -Activity <string>
        ステータス バーの上の見出しに表示するテキストの 1 行目を指定します。こ
        のテキストは、進行状況が報告されているアクティビティを示します。
        
        必須                         true
        位置                         1
        既定値                       
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -Completed [<SwitchParameter>]
        進行状況を示すバーが表示されるかどうかを示します。このパラメーターを省
        略した場合、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、WarningAction、WarningVariable、
        OutBuffer、および OutVariable。詳細については、
        「get-help about_commonparameters」と入力してヘルプを参照してください。
    
入力
    なし
        パイプを使用してこのコマンドレットに入力を渡すことはできません。
    
出力
    なし
        Write-Progress は出力を生成しません。
    
メモ
        進行状況バーが表示されない場合は、$ProgressPreference 変数の値を確認しま
        す。SilentlyContinue という値が設定されている場合、進行状況バーは表示さ
        れません。Windows PowerShell ユーザー設定の詳細については、「about_Prefe
        rence_Variables」を参照してください。
        
        このコマンドレットのパラメーターは、ProgressRecord クラス (System.Manage
        ment.Automation.ProgressRecord) のプロパティに対応しています。詳細につい
        ては、Windows PowerShell Software Development Kit (SDK) の ProgressRecor
        d に関するトピックを参照してください。
    
    -------------------------- 例 1 --------------------------
    
    C:\PS>for ($i = 1; $i -lt 101; $i++ ) 
    {for ($j=0;$j -lt 10000;$j++) {} write-progress -activity "Search in Progres
    s" -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 -sta
    tus progress-> -percentcomplete $i -currentOperation OuterLoop} for($i = 1; 
    $i -lt 101; $i++ ) {write-progress -activity Updating -status progress -perc
    entcomplete $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 
    変数に格納されているメッセージを表示します。
    
関連するリンク
    Online version: http://go.microsoft.com/fwlink/?LinkID=113428
    Write-Verbose 
    Write-Error 
    Write-Host 
    Write-Debug 
    Write-Output 
    Write-Warning 
    	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、Cmdlet、Write-Progress
ご利用数: 1861452
感想・要望・問い合わせは こちら