У меня есть очень большой массив объектов, полученных обычным Get-ChildItem, и мне нужно иметь возможность индексировать их по множеству различных свойств. У меня есть набор хеш-таблиц, которые я сделал, чтобы индексировать их по этим свойствам, но сейчас это просто набор коллекций, которые должны создаваться и управляться отдельно. В какой-то момент мне пришло в голову, что было бы неплохо просто добавить хеш-таблицы в базовую коллекцию в качестве свойств, таких как «ByPath», «ByGuid» и т. Д. Код для его построения просто собрал бы отдельные операторы, которые у меня уже есть:
$items = Get-ChildItem -recurse blahblah
$items | Add-Member -membertype NoteProperty -name "ByGuid" -value (Get-ItemsByGuid)
$items | Add-Member -memberType NoteProperty -name "ByPath" -value (Get-ItemsByPath)
$items
К сожалению, хотя это не приводит к выполнению, оно ничего не делает. Свойства существуют и видны в Get-Member, но они всегда равны нулю при запросе и выбрасываются при последующей установке.
Property 'ByGuid' cannot be found on this object; make sure it exists and is settable.
At line:1 char:14
+ $items. <<<< ByGuid = $itemsByGuid
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : PropertyAssignmentException
лежит!
Есть ли какая-то причина, по которой это не может быть возможным на основании того, что я пытаюсь сделать? Или есть какая-то причина для странно смешанных сообщений, которые я получаю?