処理に時間がかかるスクリプトを実行する場合、処理の実行状況がわかるとユーザが安心できます。PowerShell では、 Write-Progress コマンドレットを使用すると進捗状況の表示を行えるようになります。

ちなみに、以下の図がPowerShell のコンソールで紹介するサンプルを実行した結果と ISE (Integrated Scripting Environment) で実行した結果表示されるプログレスバーです。

Write-Progress 自体の使い方は非常に簡単です。詳細な説明、使い方は Get-Help Write-Progress で調べることができます。

いかに作成したテストスクリプト Execute-LongRunTask.ps1 の中身です。スクリプトファイルを実行すると上の図で掲載したプログレスバーが表示されます。

# 初期化メッセージ
$activity = "処理準備中"
$currentOperation = "処理の準備を行っています。"
for($i = 0;$i -le 100; $i++){
   $status = "前処理 {0} % 完了" -F $i
   Write-Progress $activity $status -PercentComplete $i -CurrentOperation $currentOperation
   Start-Sleep -Milliseconds 100
}

# 処理中メッセージ
$activity = "処理中"
$currentOperation = "何らかの処理を行っています。"
for($i = 0;$i -le 100; $i++){
   $status = "処理 {0} % 完了" -F $i
   Write-Progress $activity $status -PercentComplete $i -CurrentOperation $currentOperation
   Start-Sleep -Milliseconds 100
}

# 終了処理中メッセージ
$activity = "後処理中"
$currentOperation = "終了処理を行っています。"
for($i = 0;$i -le 100; $i++){
   $status = "終了処理 {0} % 完了" -F $i
   Write-Progress $activity $status -PercentComplete $i -CurrentOperation $currentOperation
   Start-Sleep -Milliseconds 100
}

Read-Host "処理を終了します" | Out-Null

簡単ですが、説明は以上です。間違いなどありましたらご連絡ください。