4

更新以包括列出对象中的空白/空属性

抱歉标题,不知道如何标记这个问题。我想表达一个字典对象列表,其中键作为标题/属性,值作为标题/属性的值。

例如下面的 PoSH 代码

$obj1 = new-object object | select Data; $obj1.Data = @{"header1"="Value1";"header2"="Value2";}
$obj2 = new-object object | select Data; $obj2.Data = @{"header1"="ValueA";"header2"="ValueB";}
$obj3 = new-object object | select Data; $obj3.Data = @{"header1"="Value1";"header3"="ValueC";}

$tmp = @($obj1,$obj2,$obj3)

$tmp然后如下所示:

Data                       
----                        
{header2, header1}
{header2, header1}
{header3, header1}

$tmp | select -Expand Data得到以下有用信息

Name                           Value   
----                           -----       
header2                        Value2
header1                        Value1
header2                        ValueB
header1                        ValueA
header3                        ValueC
header1                        Value1

无论如何,我可以旋转数据并将名称转换为属性(或标题)并用值表示它们,即

header1                        header2               header3
----                           -----                 -----
Value1                         ValueB
ValueA                         Value2
Value1                                               ValueC

注意:我已经能够通过编写一个函数来执行此操作,该函数获取我的 Dictionary 列表中的每个对象,创建一个新对象并通过 Add-Member 添加属性,但是当您有数千个条目时,这是一个昂贵且缓慢的过程并且数千个字典键

4

2 回答 2

5

由于 Powershell v2 new-object 有一个property参数,可让您输入一个哈希表,其中键是属性的名称,值是属性值。

$tmp | select -expand data | %{new-object psobject -property $_}

给出:

header2                                                     header1
-------                                                     -------
Value2                                                      Value1
ValueB                                                      ValueA
于 2013-08-28T18:41:43.613 回答
1

那这个呢 :

$tmp | % {"header1,header2"}{$_.data.header1+","+$_.data.header2} | ConvertFrom-Csv

它给 :

header1                                                                    header2
-------                                                                    -------
Value1                                                                     Value2
ValueA                                                                     ValueB
于 2013-08-28T18:17:16.797 回答