目前我对Powershell以及它如何处理Arrays/ArrayLists和PSObjects/CustomObjects感到非常困惑.
高水平:
我正在尝试导入CSV文件并在特定行插入"占位符"条目.这实际上工作正常.我唯一的问题是,如果CSV只包含1个元素(行)Powershell创建一个PsCustomObject.如果有多行,Powershell会提供一个数组.
`$ pConnectionsOnMpDevice中的1个元素
$pConnectionsOnMpDevice = ($pList | ?({$_.device -like "*$pDevice*"}))
($pConnectionsOnMpDevice).getType()
IsPublic IsSerial Name BaseType
True True PsCustomObject[] System.Object
Run Code Online (Sandbox Code Playgroud)
n元素 $pConnectionsOnMpDevice
$pConnectionsOnMpDevice = ($pList | ?({$_.device -like "*$pDevice*"}))
($pConnectionsOnMpDevice).getType()
IsPublic IsSerial Name BaseType
True True Object[] System.Array
Run Code Online (Sandbox Code Playgroud)
最后我尝试添加一个元素:
$pConnectionsOnMpDevice += $MpObject
Run Code Online (Sandbox Code Playgroud)
(我的第一个方法之一是使用(FYI):
#$pConnectionsOnMpDevice.Insert($index,$match)
Run Code Online (Sandbox Code Playgroud)
如果我尝试添加$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 …Run Code Online (Sandbox Code Playgroud)