PowerShell: Write-Progress for Progress on Multiple Scripts PowerShell: Write-Progress for Progress on Multiple Scripts powershell powershell

PowerShell: Write-Progress for Progress on Multiple Scripts


Try this out. First file is master.p1:

$parentId = 1$childId = 2Write-Progress -Id $parentId -Activity "Running master script" -Status "Step 1 of 3" -PercentComplete 0.\slave.ps1 $parentId $childIdWrite-Progress -Id $parentId -Activity "Running master script" -Status "Step 2 of 3" -PercentComplete 33.3.\slave.ps1 $parentId $childIdWrite-Progress -Id $parentId -Activity "Running master script" -Status "Step 3 of 3" -PercentComplete 66.3.\slave.ps1 $parentId $childId

Second file is slave.ps1:

param([int32]$ProgressParentId, [int32]$progressId)for($i = 0; $i -le 100; $i += 10){    Write-Progress -Id $progressId -ParentId $parentId `                   -Activity "Running slave script" `                   -Status "Processing $i" `                   -CurrentOperation "CurrentOp $i" -PercentComplete $i    Start-Sleep -Milliseconds 500}

Put those two files in the same dir and from PowerShell (or ISE) execute master.ps1. I have used this approach before to report progress of multiple phases across multiple scripts. The key is to pass the ParentId of the top level progress to the child scripts so they can report progress in that same context. If you provide a unique Id for each, they can get their own separate progress bar. Or just the same Id everywhere to update a single progress bar.