Как указано в Ответ Incorrigible1 , $LogsProperties
уже является массивом, элементами которого являются [pscustomobject]
экземпляры со свойствами FileName
, Path
и Line
.
(Ваша попытка создать $Array
из $LogsProperties
не только не нужна, но и не удалась, поскольку все элементы $Array
в конечном итоге ссылаются на массив, на который ссылается $LogsProperties
в целом.)
Для использования метода .IndexOf()
на экземплярах массива требуется [1] , PSv3 + .
PSv3 + также позволяет вам использовать перечисление члена , поэтому вы можете применить .IndexOf()
к $LogsProperties.Line
для поиска в массиве .Line
значений свойств:
$LogsProperties.Line.IndexOf('XXX Value') # -> 0
В PSv2 вы можете использовать цикл foreach
для определения индекса:
$i = 0
foreach ($obj in $LogsProperties) { if ($obj.Line -eq 'XXX Value') { break }; ++$i }
if ($i -eq $LogsProperties.Count) { $i = -1 }
# $i now contains the index of the matching element or -1, if not found.
[1] Тип System.Array
, базовый тип для всех массивов, также имеет a static .IndexOf()
метод , который также доступен в PSv2. Однако, учитывая необходимость поиска значений свойств .Line
элементов массива $LogProperties
, здесь это не поможет, если сначала не будет создан отдельный массив с только значениями свойств .Line
.