Exchange Web 服务 (EWS) - 约会资源

Posted

技术标签:

【中文标题】Exchange Web 服务 (EWS) - 约会资源【英文标题】:Exchange Web Services (EWS) - Appointment Resources 【发布时间】:2017-06-12 20:50:42 【问题描述】:

我设法使用 EWS 命令​​行为模拟帐户创建了约会。

但我想包括一个房间(交换室邮箱)作为资源/位置。

在我的脚本中,我添加了以下两个命令行:

$NewAppointment.Location($RoomName) $NewAppointment.Resources.Add($RoomMail)

$RoomName$RoomMail 可以通过 Get-MailBox 命令行找到:

$Room = Get-MailBox $CSV.Room $RoomName = $Room.DisplayName $RoomMail = $Room.UserPrincipalName or $Room.PrimarySmtpAddress

编辑:

我添加了以下代码块:

$NewGuid = newGuid
$LocationURIGuid = $NewGuid.Guid
$LocationURI = New-Object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition($LocationURIGuid, "LocationUri", [Microsoft.Exchange.WebServices.Data.MapiPropertyType]::String)
$NewAppointment.SetExtendedProperty($LocationURI,$RoomMail)

$NewGuid = newGuid
$LocationSourceGuid = $NewGuid.Guid
$LocationSource = New-Object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition($LocationSourceGuid, "LocationSource", [Microsoft.Exchange.WebServices.Data.MapiPropertyType]::Integer)
$NewAppointment.SetExtendedProperty($LocationSource,5)

$NewGuid = newGuid
$LocationDisplayNameGuid = $NewGuid.Guid
$LocationDisplayName = New-Object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition($LocationSourceGuid, "LocationDisplayName", [Microsoft.Exchange.WebServices.Data.MapiPropertyType]::Integer)
$NewAppointment.SetExtendedProperty($LocationDisplayName,$Room)

newGuid 是一个函数:

function newGuid()  return [guid]::NewGuid() 

错误是:

为“ExtendedPropertyDefinition”和参数计数找到多个不明确的重载:“3”。

【问题讨论】:

【参考方案1】:

您只需要在创建约会后使用 Load() 重新加载约会,然后您应该会看到这些属性已填写。该信息在约会创建时填充,并且不会在 CreateItem 操作中返回,因此不会在您发出另一个 GetItem 请求之前一直显示。

编辑

您需要使用扩展属性添加此信息,因为 EWS 不会为您执行此操作,例如

        Guid PropGuid = Guid.Parse("A719E259-2A9A-4FB8-BAB3-3A9F02970E4B");
        ExtendedPropertyDefinition LocationURI = new ExtendedPropertyDefinition(PropGuid, "LocationUri", MapiPropertyType.String);
        ExtendedPropertyDefinition LocationSource = new ExtendedPropertyDefinition(PropGuid, "LocationSource", MapiPropertyType.Integer);
        ExtendedPropertyDefinition LocationDisplayName = new ExtendedPropertyDefinition(PropGuid, "LocationDisplayName", MapiPropertyType.String);
        newapt.SetExtendedProperty(LocationURI, "Somewhere@domain.com");
        newapt.SetExtendedProperty(LocationSource, 5);
        newapt.SetExtendedProperty(LocationDisplayName, "Somewhere");

编辑2个powershell代码

$PropGuid = [Guid]::Parse("A719E259-2A9A-4FB8-BAB3-3A9F02970E4B")
    $LocationURI = New-Object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition($PropGuid, "LocationUri", [Microsoft.Exchange.WebServices.Data.MapiPropertyType]::String)
    $NewAppointment.SetExtendedProperty($LocationURI,$RoomMail)

    $LocationSource = New-Object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition($PropGuid, "LocationSource", [Microsoft.Exchange.WebServices.Data.MapiPropertyType]::Integer)
    $NewAppointment.SetExtendedProperty($LocationSource,5)

    $LocationDisplayName = New-Object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition($PropGuid, "LocationDisplayName", 

    [Microsoft.Exchange.WebServices.Data.MapiPropertyType]::Integer)
    $NewAppointment.SetExtendedProperty($LocationDisplayName,$Room)

【讨论】:

感谢您的回答。事实是 Load() 或不是我添加的房间看起来不像一个房间。在命令行或网络应用程序中,位置始终显示为地址。 您能否在问题中添加一些说明,因为您没有提供足够的细节或代码供任何人回答 好的。抱歉 :) 当我想以房间作为资源/位置的模拟帐户创建会议/约会时,我使用 $NewAppointment.Resources.Add($Room) 命令行。此命令添加了一个资源,但该资源并未显示为真实房间。 Outlook OWA 上的结果是 Location 条目显示为经典地点(Bing 搜索),而不是房间。 EWS 不会添加此信息,您需要通过一些扩展属性对其进行设置,请参阅我的上述编辑 感谢您的信息。你在 PowerShell 中有相同的代码吗?

以上是关于Exchange Web 服务 (EWS) - 约会资源的主要内容,如果未能解决你的问题,请参考以下文章

EWS(Exchange Web 服务)出现未经授权的错误

使用 TokenCredentials 的 Exchange Web 服务 (EWS) 单点登录?

导入 Exchange Web 服务 (EWS) wsdl 文件时如何修复未解析的类型?

当我的应用程序托管在 IIS 上时,Microsoft Exchange Web 服务 (EWS) 无法正常工作

Exchange Web 服务 (EWS) - 如何识别会议参与者是邮件组还是个人参与者

需要一种使用 EWS Web 服务 (SOAP) 查找 Exchange 产品版本的方法