arrays - 从 powershell 数组/集合/哈希表中删除一行

标签 arrays powershell

我有一个大数组(从 Excel 电子表格导入),其中有一个我想删除的“总计”行。它始终是数组中的最后一项。我试图找到一种方法来删除最后一个数组项,但不能。数据和代码示例如下:

$data = Import-XLSX -Path "C:\Pathtofile\spreadsheet.xlsx" -Sheet "SheetName" -RowStart 3
$data | ? {$_.Server -eq "Total"}


Server        : Total
VLAN          :
IP Address    :
CPU           : 84
RAM           : 313
C:\           : 2840
D:\           : 17950
OS Version    :
OS Edition    :
SQL Version   :
SQL Edition   :
Datastore     :
Reboot        :
Notes         :

我希望能够从数组中删除这一行。我尝试了以下方法:
$data.Remove("Total")
Exception calling "Remove" with "1" argument(s): "Collection was of a fixed size."
At line:1 char:1
+ $ImportCSV.Remove("Total")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : NotSupportedException

如果我检查数组类型,我会得到以下信息:
$data.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array

如果我像这样重新输入对象,我会得到以下信息:
$data = {$data}.Invoke()
$data.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Collection`1                             System.Object

$data.Remove("Total")
False

这不会删除项目。我在这里缺少什么?

最佳答案

数组在 PowerShell 中是不可变的,您不能在其中添加或删除元素。你可以做的是:

a) 创建一个新数组并过滤掉不需要的数组(例如使用 -ne ):

$data = $data | ? {$_.Server -ne "Total"}



b) 按索引选择直到最后一个元素的所有内容(可能在大数组上资源匮乏,我不知道):
$data = $data[0..($data.Count-2)]



c) 投到 [System.Collections.ArrayList] ,这是可变的,然后从中删除一个元素:
$data = [System.Collections.ArrayList]$data
$data.RemoveAt($data.Count-1)

关于arrays - 从 powershell 数组/集合/哈希表中删除一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40274422/

相关文章:

powershell - 使用 PowerShell 获取模式后的字符串值

远程执行时 PowerShell 脚本失败

c++ - 如何将 CV_64F 类型的 Matrix 转换为具有 Double 元素的一维数组

ios - 在 TableViewController 中呈现嵌套数组

powershell - 如何使用 Powershell System.Net.WebClient 和自定义用户代理字符串保存 "browser-initiated download"文件?

powershell - 数组输出到多行

azure - 来自 VSTS 管道的 PowerShell 远程

java - 将整数数组转换为一个长整数

r - 如何在 R 中从 2D 矩阵创建 3D 数组?

javascript - 将现有数组插入多个数组js