我正在使用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
答案 0 :(得分:2)
如果结果中有嵌套数组,并且要提取它们,则可以使用嵌套循环和自定义对象,如下所示:
foreach ($recepient in $recepients){
Foreach ($SingleRecipient in $recepient.Recipients) {
[PSCustomObject]@{
User = $SingleRecipient
timestamp = $recepient.timestamp
MessageSubject = $recepient.MessageSubject
eventid = $recepient.eventid
}
}
}
答案 1 :(得分:0)
非常感谢。使用了pscustomobject并将其添加到变量中。
使用嵌套 foreach循环更有意义。