如何从阵列powershell中删除
如何从循环中的如何从阵列powershell中删除,powershell,powershell-3.0,Powershell,Powershell 3.0,如何从循环中的pscustomobject数组中删除行 如果在循环中使用此选项,则会出现错误: $a = $a | where {condition to remove lines} 获取以下错误 Method invocation failed because [System.Management.Automation.PSObject] does not contain a method named 'op_Addition'. 任何从数组中删除行的建议。鉴于问题的一般标题,让我提出一些
pscustomobject
数组中删除行
如果在循环中使用此选项,则会出现错误:
$a = $a | where {condition to remove lines}
获取以下错误
Method invocation failed because [System.Management.Automation.PSObject] does not contain a method named 'op_Addition'.
任何从数组中删除行的建议。鉴于问题的一般标题,让我提出一些一般性观点:
- 阵列(在.NET中,它是PowerShell的基础)是固定大小的数据结构。因此,不能直接从中删除元素
- 但是,可以创建一个新数组,该数组是原始数组的副本,省略了不需要的元素,这就是管道方法所促进的:
[System.Object[]]
)中管道的输出
但是,由于PowerShell会自动展开单个元素的结果,因此此处需要数组子表达式运算符@(…)
,以确保$a
即使仅返回单个元素也保持数组
请注意,即使结果被分配回输入变量$a
,$a
现在技术上包含一个新数组(旧数组如果没有在别处引用,最终将被垃圾收集)
至于你所尝试的: 如何从pscustomobject数组中删除行 正如所指出的,
[pscustomobject]
不是数组,但您可能想说您有一个数组,其元素是自定义对象,在这种情况下,上述方法适用。或者,如果要从中删除元素的数组存储在自定义对象的属性中,则改为通过管道发送该属性的值,并将结果分配回该属性 尝试将
+
运算符与[pscustomobject]
实例一起用作LHS时,会出现错误消息,这是不受支持的;e、 g:
> ([pscustomobject] @{ foo = 'bar' }) + 1
Method invocation failed because [System.Management.Automation.PSObject] does not contain a method named 'op_Addition'.
...
PowerShell不知道如何向自定义对象“添加”某些内容,因此它会抱怨。鉴于问题的一般标题,让我提出一些一般性观点:
- 阵列(在.NET中,它是PowerShell的基础)是固定大小的数据结构。因此,不能直接从中删除元素
- 但是,可以创建一个新数组,该数组是原始数组的副本,省略了不需要的元素,这就是管道方法所促进的:
[System.Object[]]
)中管道的输出
但是,由于PowerShell会自动展开单个元素的结果,因此此处需要数组子表达式运算符@(…)
,以确保$a
即使仅返回单个元素也保持数组
请注意,即使结果被分配回输入变量$a
,$a
现在技术上包含一个新数组(旧数组如果没有在别处引用,最终将被垃圾收集)
至于你所尝试的: 如何从pscustomobject数组中删除行 正如所指出的,
[pscustomobject]
不是数组,但您可能想说您有一个数组,其元素是自定义对象,在这种情况下,上述方法适用。或者,如果要从中删除元素的数组存储在自定义对象的属性中,则改为通过管道发送该属性的值,并将结果分配回该属性 尝试将
+
运算符与[pscustomobject]
实例一起用作LHS时,会出现错误消息,这是不受支持的;e、 g:
> ([pscustomobject] @{ foo = 'bar' }) + 1
Method invocation failed because [System.Management.Automation.PSObject] does not contain a method named 'op_Addition'.
...
PowerShell不知道如何向自定义对象“添加”某些内容,因此它会抱怨。自定义对象不是数组。请显示在
其中脚本块自定义对象不是数组中使用的实际条件。请显示在其中脚本块中使用的实际条件