我想知道如何在Powershell中使用嵌套的Forach-Object,Where-Object和其他Cmdlet.例如这段代码:
$obj1 | Foreach-Object {
$obj2 | Where-Object { $_ .... }
}
Run Code Online (Sandbox Code Playgroud)
所以在Foreach-Object的代码块中我使用了$obj1as 的元素$_.但是在Where-Object的代码块中也发生了同样的事情$obj2.那么如何访问Where-Object代码块中的两个对象元素呢?我不得不这样做,$_.Arg1 -eq $_.Arg1但这毫无意义.
Lie*_*ers 35
afaik,你需要通过将它放在一个局部变量中来保持对外循环的引用.
$obj1 | Foreach-Object {
$myobj1 = $_
$obj2 | Where-Object { $_ .... }
}
Run Code Online (Sandbox Code Playgroud)
解决这个问题的另一种方法是使用稍微不同的foreach
ForEach($item in $obj1){
$obj | Where-Object{$_.arg -eq $item.arg}
}
Run Code Online (Sandbox Code Playgroud)
仍然归结为about_Scopes.$_始终是对当前范围的引用.正如你必须知道的($_.Arg1 -eq $_.Arg1)那样只会引用自己.
| 归档时间: |
|
| 查看次数: |
24507 次 |
| 最近记录: |