Две вещи, которые нужно исправить:
Полученное значение $properties_multivalue
будет строкой, а не массивом хеш-таблиц, поэтому измените строку 3 на:
$properties_select = @()
.Во-вторых, это Expression
скрипт-блок - к тому времени, когда Select-Object
выполнится во втором цикле, $prop
и $i
будут преобразованы в memberOf
и 8
соответственно, последние два значения, которые были назначены им впервый цикл.
Чтобы отдельные скриптовые блоки "запоминали" значения, какими они были на момент назначения, вам необходимо закрыть их с помощью метода GetNewClosure()
:
$properties_select += @{Name=$prop+'_'+$i; Expression={$_.$($prop[$i])}.GetNewClosure()}
Кроме того, я думаю, вам нужно изменить порядок вычисления переменных внутри Expression
в: $($_.$prop)[$i]
(т. Е. Сначала ссылаться на $_.memberOf
, а затем получить значение по индексу $i
этого значения)