2015-10-23 7 views
6

Ich suche nach einer Möglichkeit, mehrere Fortschrittsbalken anzuzeigen, einen für eine äußere Schleife und einen für eine innere. Ich habe ein Skript, das eine große Liste von benutzerdefinierten Objekten durchläuft, und für jedes dieser Objekte habe ich eine innere Schleife, die Aktionen in einer Liste ausführt, die ein Attribut dieser Objekte ist.Mehrere Powershell-Fortschrittsbalken (verschachtelt?)

Script Beispiel:

$ListOfIDs.Keys | 
Show-Progress | #Outer Loop - ProgressBar1 
% { 
    $entityName = $_ 
    $TableIndex = $ListOfEntities.Name.IndexOf($entityName) 
    $TableNameList = $ListOfEntities[$TableIndex].Group.RoleTable 

    $ListOfIDS[$_] | 
    Show-Progress | #Inner Loop - ProgressBar2 
    % { 
     $ID = $_.ID 
     [PSCustomObject] @{ 
      EntityName = $entityName 
      Id = $ID 
      Roles = $TableNameList | Function-FooBar -ID $ID 
     } 
    } 
} 

Show-Fortschritt Funktion:

function Show-Progress 
{ 
[CmdletBinding()] 
param (
    [Parameter(Mandatory=$true, Position=0, ValueFromPipeline=$true)] 
    [PSObject[]]$InputObject 
) 

    [int]$TotItems = $Input.Count 
    [int]$Count = 0 

    $Input|foreach { 
     $_ 
     $Count++ 
     [int]$PercentComplete = ($Count/$TotItems* 100) 
     Write-Progress -Activity "Processing items" -PercentComplete $PercentComplete -Status ("Working - " + $PercentComplete + "%") 
    } 
} 

Hier ist ein kleines Beispiel von dem, was ich suche: ProgressExample

Antwort

11

Sie die Parameter verwenden können -ParentId und -Id, um das zu erreichen. An der äußeren Schleife weisen Sie die ID 1, und an der inneren Schleife Sie angeben, wie ParentId den Wert 1.

+0

Das erreicht, was ich perfekt wollte, ich kann nicht glauben, dass ich die Elterneigenschaft nie bemerkt habe, fühle mich jetzt dumm. Danke für die Hilfe! –

+0

Gern geschehen :) –