Вы должны инициализировать $ codesectionlist как массив. В противном случае вы пытаетесь добавить один объект pscustomobject к другому.
$codesectionlist += [pscustomobject]@{name='Joe'}
$codesectionlist += [pscustomobject]@{name='John'}
InvalidOperation: Method invocation failed because [System.Management.Automation.PSObject] does not contain a method named 'op_Addition'.
$codesectionlist.gettype().fullname
System.Management.Automation.PSCustomObject
$codesectionlist = @()
$codesectionlist += [pscustomobject]@{name='Joe'}
$codesectionlist += [pscustomobject]@{name='John'}
$codesectionlist.gettype().fullname
System.Object[]
Возможно, глобальная переменная включена в вопрос. Скрипт использует собственную область видимости скрипта с оператором + =. Отладка подобна точечному поиску сценария.
cat script.ps1
$a += 1
$a += 2
$a
$global:a = @()
.\script
3
. .\script
1
2
Странно, но $ a = $ a + 1 с точки зрения контекста работает иначе, чем $ a + = 1.
cat ./script.ps1
$a
$a = $a + 1
$a = $a + 2
$a
$global:a = @()
./script
1
2
На самом деле я использовал скрипт вместо функции, но все по-прежнему применяется.
О, это верно. Это ошибка, которую я опубликовал в декабре прошлого года: + =, функции и глобальные переменные # 11297