如何在嵌套循环中使用$ _?

时间:2018-12-18 15:14:38

标签: powershell

如果我有2个嵌套循环,如何在内部循环内部引用外部循环中的当前项目?有可能吗?

$arrayA = @(1..10)
$arrayB = @(11.20)
$arrayA.ForEach({$_; $arrayb.Where({$_ -eq $_})})

2 个答案:

答案 0 :(得分:2)

使用cmdlet而不是使用数组方法:

$arrayA | ForEach-Object -PipelineVariable item {
    $arrayB.Where{$item -eq $_}
}

# shortened
$arrayA | % -pv item { $_; $arrayB.Where{$item -eq $_} }

-PipelineVariable是在v4中引入的(基于对数组方法ForEachWhere的使用)。


虽然是更好的解决方案:

$arrayA.Where{$_ -in $arrayB}

答案 1 :(得分:0)

这是一个简短的示例,说明了如何在第二个数组的循环内访问第一个数组的元素的当前值:

$arrayA = @(1..10)
$arrayB = @(1..10)

$arrayA | foreach {

    $tempA = $_
    $arrayB | foreach {

        "$tempA - $_"
    }
}

只需运行代码即可获得想法。