我们可以在foreach循环中更新数组集合吗?

时间:2017-11-29 00:54:58

标签: powershell-v3.0

$DLs="I have a collection of DLs in here"

每个DL可能有Sub-DL作为成员;因此,我使用foreach循环并更新循环中的列表,如下所示。

foreach ($ML in $DLs) {

   $Temp=Get-DistributionGroupMember -Identity "$ML" | select Name, RecipientType
   $DLs+=($Temp | Where-Object{$_."RecipientType" -eq "MailUniversalDistributionGroup" -or $_."RecipientType" -eq "DynamicDistributionGroup"})."Name"
}

就我的理解而言,PowerShell假设要检查最终添加的DL,但它并没有这样做。

有人可以为我提供解决方案吗?

1 个答案:

答案 0 :(得分:0)

根据我的不足,Foreach在循环中使用自动变量$Foreach。所以这里的$DL只有在循环完成后才会生效。

这是一个Psuedo代码,例如:

foreach($t in $r){$t;$r=1;"r is $r";pause}

enter image description here

<强>更新

您可以使用For循环代替foreach

示例:

$r = 1..5

for($i = 0 ; $i -lt $r.count ; $i++)
{
        $r += 1..10 | Get-Random
    "current value is $($r[$i])"
    "r is $r"
}