Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从阵列powershell中删除_Powershell_Powershell 3.0 - Fatal编程技术网

如何从阵列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的基础)是固定大小的数据结构。因此,不能直接从中删除元素

  • 但是,可以创建一个新数组,该数组是原始数组的副本,省略了不需要的元素,这就是管道方法所促进的:

当您将输出分配给变量时,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的基础)是固定大小的数据结构。因此,不能直接从中删除元素

  • 但是,可以创建一个新数组,该数组是原始数组的副本,省略了不需要的元素,这就是管道方法所促进的:

当您将输出分配给变量时,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不知道如何向自定义对象“添加”某些内容,因此它会抱怨。

自定义对象不是数组。请显示在
其中
脚本块自定义对象不是数组中使用的实际条件。请显示在
其中
脚本块中使用的实际条件