警告 - 我过去曾问过类似的问题,但这略有不同。
tl;博士; 我想导出具有不同数量属性的对象。例如; 对象 1 可能有 3 个 IP 地址和 2 个 NIC,但对象 2 有 7 个 IP 地址和 4 个 NIC(但不限于此数量 - 它可能是 N 个属性)。
我可以愉快地捕获和构建包含我需要的所有信息的对象。如果我只是将数组输出到控制台,每个对象都会显示其所有属性。如果我想 out-file 或 export-csv 我开始遇到标题周围的问题。
以前JPBlanc建议根据属性的数量对对象进行排序 - 即,具有最多属性的对象将排在第一位,因此将输出最多属性的标题。
假设我已经构建了一个服务器对象,该对象具有基于 IP 地址和 NIC 卡的不同属性。例如;
ServerName: Mordor
IP1: 10.0.0.1
IP2: 10.0.0.2
NIC1: VMXNET
NIC2: Broadcom
ServerName: Rivendell
IP1: 10.1.1.1
IP2: 10.1.1.2
IP3: 10.1.1.3
IP4: 10.1.1.4
NIC1: VMXNET
最初,如果您要导出这些对象的数组,则标头将建立在第一个对象(也就是,您只会获得 ServerName、IP1、IP2、NIC1 和 NIC2)的基础上,这意味着对于第二个对象,您将丢失任何后续IP(例如 IP3 和 IP4)。为了纠正这个问题,在导出之前,我根据 IP 属性的数量进行排序 - tada - 第一个对象现在在数组中拥有最多的 IP,因此后续对象的 IP 都不会丢失。
不利的一面是当您拥有第二个可变属性时 - 例如 NIC。一旦我的排序基于 IP 完成,我们就会有标题 ServerName、IP1 - IP4 和 NIC1。这意味着 NIC2 的后续对象属性丢失。
有没有一种可扩展的方式来确保在导出这样的对象时不会丢失数据?