【发布时间】:2013-01-09 03:42:48
【问题描述】:
警告 - 我过去曾询问过 similar question,但这次略有不同。
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
最初,如果您要 export-csv 一个包含这些对象的数组,则标头将建立在第一个对象(也就是您只会获得 ServerName、IP1、IP2、NIC1 和 NIC2)的基础上,这意味着您将丢失任何后续 IP(例如 IP3 和 IP4)。为了纠正这个问题,在导出之前,我根据 IP 属性的数量进行排序 - tada - 现在第一个对象在数组中拥有最多的 IP,因此后续对象的 IP 都不会丢失。
缺点是当您拥有第二个可变属性时 - 例如 NIC。一旦我的排序基于 IP 完成,我们就会有标题 ServerName、IP1 - IP4 和 NIC1。这意味着 NIC2 的后续对象属性丢失。
是否有一种可扩展的方式来确保在导出此类对象时不会丢失数据?
【问题讨论】:
-
我很幸运能与 Jeffrey Snover 交谈,他确认 Export-Csv 在这种情况下无法工作。 Jeffrey 的建议是转向 Export-CliXML 并基于此输出构建报告。叹息。
-
你试过我的更新答案了吗?
标签: powershell