【发布时间】:2021-06-20 14:11:18
【问题描述】:
我正在从 ESXi 主机导入 esxtop 数据。导入给了我两组数据。第一个是我将从中获取数据的所有字段的列表。第二个是这些字段中的数据。
字段列表是这样的:
|SchedGroup|GroupID|GroupName|IsValid|IsVM|VMName|TimerPeriod|CPUAllocMin|CPUAllocMax|
我将其转换为名为 $Headercols 的 Selected.System.String:
header
------
SchedGroup
GroupID
GroupName
IsValid
IsVM
VMName
TimerPeriod
CPUAllocMin
CPUAllocMax
但我实际上需要它在列中,而不是在行中。因为稍后我想添加包含数据的“记录”/“行”。我尝试使用 add-member 转换为列,但这需要一个名称和一个值,但我还不知道该值。
这里的示例只有几行,但会增长到 33 行,所以我宁愿将它们填充在一个循环中,而不是专门针对每一行。
稍后我会收到这样的数据:
|SchedGroup|13567824|vm.4430541|1|1|BJLDC002|10416|0|-1|
|SchedGroup|12883482|vm.4316334|1|1|VCDJAGTEST|15260|0|-1|
|SchedGroup|13558449|vm.4429332|1|1|BJLADF02|1000|0|-1|
(示例有 3 行,每行一个虚拟机,但它可以是更多行与虚拟机。) 我知道如何将行拆分为单独的值,但就像标题一样,我不知道如何扩展对象。
我在谷歌上搜索的所有示例都立即添加名称和值,我似乎无法理解我应该如何使用它。
【问题讨论】:
-
这是因为大多数格式化和导出 cmdlet 不希望您“创建列” - 您只需创建对象,
Format-Table和Export-Csv等 cmdlet 将推断 对象属性中的逻辑列名。您正在尝试解决一个不存在的问题 -
好的,我解决这个问题的方式是错误的吗?我怎样才能得到一个看起来像这样的对象:SchedGroup,GroupID,GroupName,IsValid,IsVM,VMName,TimerPeriod SchedGroup,13567824,vm.4430541,1,1,BJLDC002,10416 SchedGroup,12883482,vm.4316334,1 ,1,VCDJAGTEST,15260 SchedGroup,13558449,vm.4429332,1,1,BJLADF02,1000
-
这只是一个 csv 表格格式。只需使用正则表达式将
|替换为 ','。
标签: arrays powershell object