Heureka die 2. - PowersHell
Mal wieder für diejenigen, die es interessiert:
Nachdem wir am 4.8. das Recipient-Array in der Ausgabe des Messagetracking-Logs aufgelöst ausgegeben haben, wandeln wir das Ganze jetzt so um, dass jeder Recipient in einer eigenen Zeile in einem benutzerdefinierten Logfile auftaucht.$sent=@(Get-MessageTrackingLog -server $MyServer -start $Start -end $End -EventID SEND -ResultSize unlimited |Where-Object{$_.Source -eq "SMTP"} | Select TimeStamp, MessageId, ServerIP, EventID, Source, Sender, @{Name="Recipients";Expression={$_.recipients}}, RecipientCount, totalbytes | Sort-Object -property timestamp ) ForEach($item in $sent)
{
#Recipients aufdröseln
For ($i=0;$i -lt $item.RecipientCount;$i++)
{
if ($item.RecipientCount -eq 1)
{ $test = $item.Recipients }
else
{ $test = $item.Recipients[$i]}#Jeden Recipient in eigenem row-Datensatz (Hashtable) speichern $row = @{} #Felder: TimeStamp, MessageId, ServerIP, EventID, Source, Sender, SingleRecipient, RecipientCount, totalbytes
$row.TimeStamp = $item.TimeStamp
$row.MessageID = $item.MessageId
$row.ServerIP = $item.ServerIP
$row.EventID = $item.EventID
$row.Source = $item.Source
$row.Sender = $item.Sender
$row.SingleRecipient = $test
$row.RecipientCount = $item.RecipientCount
$row.totalbytes = $item.totalbytes#Da die Ausgabe eines Arrays aus Hashtables in die Hose geht, wird hier die $row-Hashtable in ein PSObject umgewandelt $myrowobj = New-Object PSObject
$myrowobj = ConvertTo-Object $row #Datensatzobjekt in Ergbnisliste schreiben
$ergebnis += $myrowobj
}
} #ergebnis in CSV-Datei ausgeben
$ergebnis | export-csv c:\ausgabe.csv
Um die Hashtable in ein Powershell-Objekt umzuwandeln, benötigen wir die folgende kleine Funktion:
function ConvertTo-Object($hashtable) #konvertiert Hashtable in PSObjekt
{
$object = New-Object PSObject
$hashtable.GetEnumerator() |
ForEach-Object
{ Add-Member -inputObject $object -memberType NoteProperty -name $_.Name -value $_.Value }
return $object
}
Das Ganze ist mit großer Wahrscheinlichkeit von hinten durch die Brust ins Auge geschossen und wer eine bessere Idee hat, darf sie gerne in die Comments schreiben, aber es funktioniert. :-)
Comments [0]