【发布时间】:2019-02-10 01:36:13
【问题描述】:
我正在使用 Exchange 邮件跟踪从数组中拆分收件人,以便他们出现在自己的行中。
当我运行以下命令时:
foreach ($recepient in $recepients){
$recepient.Recipients
}
收件人显示为列表。
但是,当我将变量添加为表达式时,输出显示的是仍在数组中的收件人。
也尝试使用:
Split-Array -inArray $user -Size 1
进展不大。
输出未拆分收件人数组。示例:
时间戳收件人 Messagesubject eventID --------- ---------- ---------------- -------- 01/01/2019 10:11:00 {User1,User2} 主题交付$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
目标是让每个用户都在自己的线路上
时间戳收件人 Messagesubject eventID --------- ---------- ---------------- -------- 2019 年 1 月 1 日 10:11:00 用户 1 主题交付 2019 年 1 月 1 日 10:11:00 用户 2 主题交付【问题讨论】:
-
您将需要一个嵌套的 foreach 循环来提取收件人属性中的用户。
-
[1] 这个
$recepients = get-messagetrackinglog没有收到recipients ...它正在收到消息。 [grin] [2] 这意味着这个foreach ($recepient in $recepients)没有给你的recipients ...它给你messages。 [3] 这意味着这个$user = $recepient.Recipients最终会为您提供一个或多个实际收件人。 ///// 如果您希望将这些收件人列在单独的行上,您将需要遍历该列表。如果您只想扩展列表,请使用$Message.Recipients -join ';'为您提供分号分隔的文本字符串。
标签: arrays powershell foreach