Powershell System Array с использованием функции Add - PullRequest
1 голос
/ 21 апреля 2020

Я извлекаю некоторые данные из моего EventViewer, который возвращает вывод как system.array:

$GetEvents = [regex]::Split((Get-EventLog -source $source -LogName $logname -EntryType Warning -InstanceId $id -Newest 1).Message, '\n')

вывод может выглядеть так:

10: 40

55: 3.4

Я пытаюсь использовать функцию Add, но постоянно получаю следующую ошибку:

Исключение вызывает "Add" с аргументом (ами) "1": "collection был фиксированного размера. "

вот как я пытаюсь использовать функцию" Добавить ":

foreach($item in $array)
{
    $GetEvents.Add($item)
}

массив $ также основан на типе как system.array

я знаю, что могу сделать следующее:

$GetEvents = $array

но это не то, чего я пытаюсь достичь, я сравниваю между элементами, которые у меня есть в массиве, с теми, что есть у меня внутри $ GetEvents.

например:

$array = '22: 15','35: 4','10: 40'
$GetEvents = '10: 40','55: 3.4'

Каждый «элемент», который не существует в массиве $ GetEvents из $, должен быть добавлен в $ GetEvents.

также $GetEvent += $item не будет делать трюк.

также $GetEvents = New-Object System.Collections.ArrayList удалит данные из этого массива.

Я надеюсь, что я объяснил свое объяснение, и это понятно.

Заранее спасибо!

1 Ответ

1 голос
/ 21 апреля 2020

System.Array на самом деле не изменяемого размера, метод Add() доступен только для удовлетворения интерфейса IList.

Возможно, вы захотите использовать вместо фактический список :

$GetEvents = [System.Collections.Generic.List[string]]::new()
$GetEvents.AddRange(
  [regex]::Split((Get-EventLog -source $source -LogName $logname -EntryType Warning -InstanceId $id -Newest 1).Message, '\n')
)

foreach($item in $array){
  $GetEvents.Add($item)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...