Разбиение массивов в foreach - PullRequest
       4

Разбиение массивов в foreach

0 голосов
/ 10 февраля 2019

Я использую отслеживание сообщений Exchange для разделения получателей из массива, чтобы они отображались в отдельной строке.

Когда я запускаю следующее:

foreach ($recepient in $recepients){
    $recepient.Recipients
}

Получатели отображаются каксписок.

Однако, когда я добавляю переменную в качестве выражения, выходные данные показывают, что получатели все еще находятся в массиве.

Также пытались использовать:

Split-Array -inArray $user -Size 1

безбольшой прогресс.

Выходные данные не разделяют массив получателей.Пример:

Timestamp           recipients       Messagesubject      eventID
---------           ----------       ----------------    -------
01/01/2019 10:11:00 {User1,User2}    Subject             Deliver
$Report = @()

$Sender = "sender@email.com"
$recepients = Get-MessageTrackingLog -EventId "Deliver" -Sender $Sender -Start (Get-Date).AddDays(-8) -MessageSubject "Subject"

foreach ($recepient in $recepients) {
    $user = $recepient.Recipients

    $Data = $recepient | select timestamp,@{L=”recepients”;E={$user}},eventid

    $report += $Data
}
$Report

Цель состоит в том, чтобы каждый пользователь был на отдельной линии

Timestamp           recipients     Messagesubject      eventID
---------           ----------     ----------------    -------
01/01/2019 10:11:00 User1          Subject             Deliver
01/01/2019 10:11:00 User2          Subject             Deliver

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Блестящее спасибо.Расширяется с помощью pscustomobject, а также добавляется в переменную.

Использование вложенного цикла foreach имело больше смысла.

0 голосов
/ 10 февраля 2019

Если у вас есть вложенные массивы в результате, и вы хотите извлечь их, вы можете использовать вложенный цикл и пользовательский объект, подобный этому:

foreach ($recepient in $recepients){
    Foreach ($SingleRecipient in $recepient.Recipients) {
        [PSCustomObject]@{
            User = $SingleRecipient
            timestamp = $recepient.timestamp
            MessageSubject = $recepient.MessageSubject
            eventid = $recepient.eventid
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...