2015-10-23 20 views
6

Tôi đang tìm cách hiển thị nhiều thanh tiến trình, một cho một vòng lặp bên ngoài và một cho một bên trong. Tôi có một kịch bản mà Loops thông qua một danh sách lớn các đối tượng tùy chỉnh, và đối với mỗi đối tượng tôi có một vòng lặp bên trong thực hiện các hành động trên một danh sách là một thuộc tính của các đối tượng đó.Nhiều thanh tiến trình Powershell (lồng nhau?)

Script Ví dụ:

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

Hiện-Progress Chức năng:

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

Dưới đây là một ví dụ nhanh về những gì tôi đang tìm kiếm: ProgressExample

Trả lời

11

Bạn có thể sử dụng tham số -ParentId-Id để thực hiện điều đó. Tại Outer Vòng bạn gán ID 1, và ở Inner Vòng bạn chỉ định như ParentId giá trị 1.

+0

Điều này đạt được những gì tôi muốn hoàn hảo, tôi không thể tin rằng tôi không bao giờ nhận thấy tài sản cha mẹ, cảm thấy ngu ngốc bây giờ. Cảm ơn đã giúp đỡ! –

+0

Bạn được chào đón :) –