Ответ 1
afaik, вам нужно сохранить ссылку на внешний цикл, поместив его в локальную переменную.
$obj1 | Foreach-Object {
$myobj1 = $_
$obj2 | Where-Object { $_ .... }
}
Мне интересно, как работать с вложенными Forach-Object, Where-Object и другими командлетами в Powershell. Например, этот код:
$obj1 | Foreach-Object {
$obj2 | Where-Object { $_ .... }
}
Итак, в блоке кода Foreach-Object я использую элементы $obj1
как $_
. Но то же самое произошло в блоке кода Where-Object с $obj2
. Итак, как я могу получить доступ к обоим объектам в блоке кода Where-Object? Мне нужно было бы сделать $_.Arg1 -eq $_.Arg1
, но это не имеет смысла.
afaik, вам нужно сохранить ссылку на внешний цикл, поместив его в локальную переменную.
$obj1 | Foreach-Object {
$myobj1 = $_
$obj2 | Where-Object { $_ .... }
}
Другой способ адресовать это с небольшим разным foreach
ForEach($item in $obj1){
$obj | Where-Object{$_.arg -eq $item.arg}
}
Все еще сводится к about_Scopes. $_
всегда ссылается на текущую область. Как вы знаете, ($_.Arg1 -eq $_.Arg1)
будет просто ссылаться на себя.