2016-04-26 17 views
0

Code:Hinzufügen Powershell mehrere Arrays von verschiedenen Spalten zu einem Hauptarray

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

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

$arrtotal 

Printout:

blabla blabla2


jedoch bei dem Versuch, beide Zellen zu drucken, einzeln (nicht eins nach dem anderen, sondern einfach in PS ISE auswählen und F8 drücken):

$arrtotal[0] 

blabla blabla2


$arrtotal[1] 

blabl3 blabla4


EDITED: Ich hätte erwartet, dass beide Array-Spalten beim Drucken von $ arrtotal gedruckt werden. Nicht nur einer von ihnen. Weiter ist mir unklar, warum das Drucken einzeln funktioniert, aber nacheinander, d. H. "$ Arrtotal [0]; $ arrtotal [1]" nicht.

EDIT2:

Dies ist mein ursprünglicher Code. Alles, was es tut, ist SparkPost API abzufragen, um einen benutzerdefinierten HTML-Bericht zu erstellen.

$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 

Mein Problem ist, dass ich $ arr nicht einfach in eine HTML-Datei konvertieren kann, wie ich es schon oft getan habe.

$arr 

EmailsReceived EmailsSent EmailsBounced


 107  107   12 

Auf der anderen Seite

$arr | Format-List 

EmailsReceived: 107 E-Mail sSent: 107 EmailsBounced: 12

DeliveredPrecentage: 100 BouncesPrecentage: 11,21

Ich mag einen HTML aus allem machen, damit ich es später per E-Mail senden kann. Wie kann ich alles pipen?

+0

Was ist die Frage? Was erwartest du? –

+0

Ich werde meinen Beitrag bearbeiten. – JustAGuy

+0

Die fehlende Deklaration hinzugefügt $ arrtotal = @() – JustAGuy

Antwort

0

Es ist weil $arr1 und $arr2 sind zwei verschiedene PSCustomObjects.Sie können die ganze array in einer Liste drucken Sie das Format-List Cmdlets:

$arrtotal | Format-List 

Ausgang:

blabla : 
blabla2 : 

blabla : 
blabla2 : 

Antwort auf Ihre edit:

Dieses wie ein einzelner Datensatz sucht ich, versuche das:

$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 

Hinweis: Ich habe auch die Logik geändert, um das Objekt zu einem bekannteren Ansatz mit einer PsCustomObject Typumwandlung auf eine Hashtabelle zu erstellen.

+0

Wenn ich ein $ arrtotal | convertto-html | out-file file.html, wie kann ich alle Spalten ausgeben? – JustAGuy

+0

Sie haben zwei Objekte mit jeweils zwei verschiedenen Spalten. Es hängt davon ab, welche Ausgabe Sie wollen. Vielleicht können Sie auch ein zusätzliches Beispiel mit einigen Daten hinzufügen. –

+0

Mein ursprünglicher Code hinzugefügt. Hoffnung, die es aufklärt. – JustAGuy

Verwandte Themen