Powershell - DataRow到一个数组

时间:2015-09-30 12:57:50

标签: powershell powershell-v2.0

我有一个SQL查询的结果,如下所示:

$result1 | get-member

TypeName: System.Data.DataRow

Name   MemberType  Definition                                                         
----   ----------  ----------                                                         
. . .
DATE   Property    System.DateTime DATE {get;set;}                              
FCO    Property    System.String FCO {get;set;}                        
LS     Property    System.String LS {get;set;}                                
TCO    Property    System.UInt32 TCO {get;set;}


$result1
#multiple lines similar to this
DATE : 29/09/2015 00:00:00
LS   : c-am1
TCO  : 8059
FCO  : 0

我需要把它变成一个数组:

$Data = @"
Date, LS, TCO, FCO
[the contents of the $result1 object goes here under the relevant headings]
[example]
29/09/2015,c-am1,8059,0
29/09/2015,c-am2,5985,3
"@

这样我就可以将其传递给ConvertTo-AdvHTML函数https://community.spiceworks.com/scripts/show/2448-create-advanced-html-tables-in-powershell-convertto-advhtml

$Data = $Data | ConvertFrom-Csv
$HTML = $Data | ConvertTo-AdvHTML     

我确信有一种简单的方法可以做到这一点,但找不到它。我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

您说您希望将数据放入数组中,然后在字符串中显示数据示例。如果您这样做是为了遵循ConvertTo-AdvHTML链接上的示例,那么这是一个不必要的步骤,因为您已经在result1中有一个对象数组。你需要做的就是这个;

$HTML = $result1 | ConvertTo-AdvHTML

您只需要向上面的代码添加任何转换为​​ConvertTo-AdvHTML的开关。 来自链接的示例中的第一步只是作者可以展示自包含的示例。

答案 1 :(得分:0)

我最终让这个工作的方式是:

$Data = @()
$Data += "DATE,LS,TCO,FCO"

$a=0
foreach($res in $result1)
    {
        $ed = $res.DATE
        $ls = $res.LS
        $tc = $res.TCO
        $fc = $res.FCO

        $Data += [string]"[row:white]$ed,$ls,$tc,$fc"

        $a++
    }

$Data = $Data | ConvertFrom-Csv
$html = $Data | ConvertTo-AdvHTML