2015-10-23 55 views
6

私は、複数のプログレスバーを表示する方法を探しています.1つは外側ループ用、もう1つはインナー用です。私はカスタムオブジェクトの大きなリストをループするスクリプトを持っています。これらのオブジェクトのそれぞれに対して、それらのオブジェクトの属性であるリストに対してアクションを実行する内部ループがあります。複数のPowershellプログレスバー(入れ子?)

スクリプトの例:

$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 
     } 
    } 
} 

ショー-進捗機能:ここで

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 + "%") 
    } 
} 

は私が探していますの簡単な例です:あなたは、パラメータを使用することができますProgressExample

答えて

11

-ParentIdとそれを達成するために-Id。アウターループであなたがID 1を割り当て、内部ループであなたがParentIdとして指定した値1

+0

これは私が完全に望んでいたものを達成し、私は親の財産に気づかなかったと信じていません。助けてくれてありがとう! –

+0

あなたは大歓迎です:) –

関連する問題