2016-04-26 150 views
0

代码:Powershell的添加不同列的多个阵列的主阵列

$arr1 = "" | select blabla,blabla2 
$arr2 = "" | select blabla3,blabla4 

$arrtotal = @() 
$arrtotal += $arr1 
$arrtotal += $arr2 

$arrtotal 

打印:

布拉布拉blabla2


然而,试图打印两个小区时单独(不是一个接一个,而是简单地在PS ISE中选择并按F8):

$arrtotal[0] 

布拉布拉blabla2


$arrtotal[1] 

blabl3 blabla4


EDITED: 我希望在打印$ arrtotal时打印两列数组。不只是其中之一。更进一步,我不清楚为什么印刷他们单独工作,但一个接一个,即“$ arrtotal [0]; $ arrtotal [1]”不。

编辑2:

这是我的原始代码。 它所做的只是查询Sparkpost的API以构建自定义HTML报告。

$test = (Invoke-WebRequest "https://api.sparkpost.com/api/v1/metrics/deliverability?metrics=count_injected,count_sent,count_bounce,count_accepted&from=2016-01-01T08:00&to=2016-04-25T08:00" -Headers @{"Authorization"="xxxxxxxxxxxxx";"Content-Type"= "application/json"}).content | ConvertFrom-Json 

$fill1 = "" | select EmailsReceived,EmailsSent,EmailsBounced 

$fill1.EmailsReceived = $test.results.count_injected 
$fill1.EmailsSent = $test.results.count_accepted 
$fill1.EmailsBounced = $test.results.count_bounce 

$fill2 = "" | select DeliveredPrecentage,BouncesPrecentage 
$fill2.DeliveredPrecentage = [math]::round($test.results.count_accepted/$test.results.count_injected*100,2) 
$fill2.BouncesPrecentage = [math]::round(($test.results.count_bounce)/$test.results.count_accepted*100,2) 

$arr = @() 

$arr += , $fill1 
$arr += , $fill2 

我的问题是,我不能简单地将$ arr转换成HTML文件,就像我以前做过很多次。

$arr 

EmailsReceived EmailsS​​ent EmailsBounced


 107  107   12 

在另一方面

$arr | Format-List 

EmailsReceived:107电子邮件sSent:107 EmailsBounced:12

DeliveredPrecentage:100 BouncesPrecentage:11.21

我想,使HTML出来的一切,所以我可以通过电子邮件稍后发送。我如何管这一切?

+0

问题是什么?你能指望什么? –

+0

我将编辑我的帖子。 – JustAGuy

+0

添加缺少的声明$ arrtotal = @() – JustAGuy

回答

0

其因为$arr1$arr2是两个不同的PSCustomObjects

$arrtotal | Format-List 

输出:

blabla : 
blabla2 : 

blabla : 
blabla2 : 

回答您的编辑:

这看起来像一个记录您可以使用Format-List cmdlet的列表中的打印整个array我试试这个:

$record = [PsCustomObject]@{ 
    EmailsReceived = $test.results.count_injected 
    EmailsSent = $test.results.count_accepted 
    EmailsBounced = $test.results.count_bounce 
    DeliveredPrecentage = [math]::round($test.results.count_accepted/$test.results.count_injected*100,2) 
    BouncesPrecentage = [math]::round(($test.results.count_bounce)/$test.results.count_accepted*100,2) 
} 

$record | convertto-html | out-file file.html 

注意:我还更改了逻辑以使用PsCustomObject类型转换在散列表上使用更为熟知的方法创建对象。

+0

如果我想做一个$ arrtotal | convertto-html | out-file file.html,如何输出所有列? – JustAGuy

+0

你确实有两个对象,每个对象都有两个不同的列。这取决于你想要的输出。另外,也许你可以添加一些其中包含一些数据的例子。 –

+0

添加了我的原始代码。希望清除它。 – JustAGuy