PowerShell - foreach()不会改变元素值

时间:2017-11-09 21:10:58

标签: powershell foreach scope reference

假设你有阵列:

$arr = @(1,2,3,4,5,6,7,8,9)
foreach($number in $arr) { $number ++ }

我希望输出为:

$arr = @(2,3,4,5,6,7,8,9,10)

为什么这不正确?

1 个答案:

答案 0 :(得分:2)

您认为自己所做的与此相同:

for ($i = 0; $i -lt $arr.Count; $i++) {
    $arr[$i]++;
}

你实际做的是等同于:

for ($i = 0; $i -lt $arr.Count; $i++) {
    $number = $arr[$i];
    $number++;
}

你真正想做的是:

$arr = $arr | ForEach-Object { $_ + 1; }