В настоящее время я очень смущен Powershell и как он обрабатывает массивы/массивы и объекты PSObjects/CustomObjects.Powershell возвращает другой тип данных в зависимости от количества элементов
Высокий уровень:
Я пытаюсь импортировать файл CSV и вставив в конкретных строках «заполнители» записи. На самом деле это нормально работает. Моя единственная проблема заключается в том, что если CSV содержит только 1 элемент (линия), Powershell создает PsCustomObject
. Если имеется несколько строк, Powershell предоставляет массив.
1 элемент в `$ pConnectionsOnMpDevice
$pConnectionsOnMpDevice = ($pList | ?({$_.device -like "*$pDevice*"}))
($pConnectionsOnMpDevice).getType()
IsPublic IsSerial Name BaseType
True True PsCustomObject[] System.Object
п элемент в $pConnectionsOnMpDevice
$pConnectionsOnMpDevice = ($pList | ?({$_.device -like "*$pDevice*"}))
($pConnectionsOnMpDevice).getType()
IsPublic IsSerial Name BaseType
True True Object[] System.Array
Наконец я пытаюсь добавить элемент:
$pConnectionsOnMpDevice += $MpObject
(один из моих первых подходов было для использования (FYI):
#$pConnectionsOnMpDevice.Insert($index,$match)
Если я пытаюсь добавить $MpObject
к $pConnectionsOnMpDevice
я получаю следующее сообщение об ошибке:
Method invocation failed because [System.Management.Automation.PSObject] does not contain a method named 'op_Addition'.
At C:\Scripts\PS_GenerateMPConfig\PS_GenerateMPConfig_06_f.ps1:90 char:13
+ $pConnectionsOnMpDevice += $MpObject
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (op_Addition:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
Я предполагаю, что это та же проблема, как описано here
Я пытался бросить $pConnectionsOnMpDevice
к Arraylist
по:
[System.Collections.ArrayList]::$pConnectionsOnMpDevice += $MpObject
Но все же никакого успеха.
Есть ли у кого-нибудь совет, как я могу добавить элемент?
Mathias, Большое спасибо вам помочь. Маленькое изменение, но успешное :) – cwa