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) - 约会资源的主要内容,如果未能解决你的问题,请参考以下文章
使用 TokenCredentials 的 Exchange Web 服务 (EWS) 单点登录?
导入 Exchange Web 服务 (EWS) wsdl 文件时如何修复未解析的类型?
当我的应用程序托管在 IIS 上时,Microsoft Exchange Web 服务 (EWS) 无法正常工作