警告-私は過去に同様の質問をしましたが、これは少し異なります。
tl; dr; さまざまな数のプロパティを持つオブジェクトをエクスポートしたいと思います。例えば; オブジェクト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のみを取得します)。つまり、2番目のオブジェクトでは後続のオブジェクトが失われます。 IP(IP3やIP4など)。これを修正するために、エクスポートの前に、IPプロパティの数(tada)に基づいて並べ替えます。これで、最初のオブジェクトのIPが配列内で最も多くなり、後続のオブジェクトのIPが失われることはありません。
欠点は、2番目に変化するプロパティ(NICなど)がある場合です。IPに基づいて並べ替えが完了すると、ServerName、IP1-IP4、NIC1という見出しが表示されます。これは、NIC2の後続のオブジェクトプロパティが失われることを意味します。
このようなオブジェクトをエクスポートするときにデータが失われないようにするためのスケーラブルな方法はありますか?