【问题标题】:Powershell outlook replace display name with full email addressPowershell Outlook 用完整的电子邮件地址替换显示名称
【发布时间】:2020-09-22 01:23:34
【问题描述】:

当我在 PS 代码下运行时,它会显示所需参加者的列表,但会显示显示名称。我应该怎么做,以便脚本显示电子邮件地址。

  Function Get-OutlookCalendar {
param ( [DateTime] $rangeStart = [DateTime]::Now.AddDays(-2)
  , [DateTime] $rangeEnd   = [DateTime]::Now.AddDays(+1)) 

$outlook = New-Object -ComObject Outlook.Application
$session = $outlook.Session
$session.Logon()
$olFolderCalendar = 9
$apptItems = $session.GetDefaultFolder($olFolderCalendar).Items
$apptItems.Sort("[Start]")
$apptItems.IncludeRecurrences = $true
$range = "[End] >= '{0}' AND [Start] <= '{1}'" -f $rangeStart.ToString("g"), $rangeEnd.ToString("g")
$myObject = New-Object System.Object
$result=@()
foreach($appt in $apptItems.Restrict($range)) { 
   $result+=$appt
}
return $result

}

获取 OutlookCalendar | %{ $_.RequiredAttendeees

}

电流输出

john, doe; Mark High; Julie, strang

预期输出

jdoe@test.com;mhigh@test.com;jstrang@test.com

请告诉我,谢谢

【问题讨论】:

  • 所需与会者的显示方式与您的 Outlook 显示方式相同。如果它们只是名称,那就是输出。就好像它们显示为将输出的电子邮件地址一样。你在使用 exchange/m365 吗?

标签: powershell outlook


【解决方案1】:

RequiredAttendees 对应于 PR_DISPLAY_TO MAPI 属性,这是一个显示名称列表。

改用AppointmentItem.Recipients 集合 - 遍历所有收件人并检查Recipient.Type == olTo (1),阅读Recipient.Address 属性。如果是 GAL 收件人,您最终可能会得到 EX 类型的地址。在这种情况下,请使用Recipient.AddressEntry.GetExchangeuser().PrimarySmtpAddress 属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-31
    • 2015-07-31
    • 1970-01-01
    • 2013-05-17
    • 2020-11-06
    • 1970-01-01
    • 2016-01-17
    • 2013-03-14
    相关资源
    最近更新 更多