将文件夹ID从EWS转换为Exchange Cmdlet的标识

时间:2013-10-15 14:30:50

标签: exchange-server exchangewebservices exchange-server-2010

使用Managed EWS 2.0,我尝试编写一些代码来在Exchange 2010上创建,删除和邮件启用公用文件夹。但是,根据Exchange MVP Glen Scales,只能启用邮件启用文件夹使用PowerShell cmdlet,可以从我的C#代码调用。到目前为止,非常好。

但是,在我的EWS文件夹对象(具有FolderId)和PowerShell的Enable-MailPublicFolder cmdlet之间进行映射时,我有点困惑,它需要GUID或文件夹路径作为标识参数。我不确定如何在两者之间进行映射。

EWS有一个ConvertIDs方法,但似乎能够生成各种格式(EwsId,EntryId,OwaId),这些格式似乎与PowerShell无关。

除了从我给定的文件夹手动生成文件夹路径之外,由于我有一个文件夹的显式标识符,这很简单但感觉很笨,有没有办法将我的文件夹ID转换为Exchange Cmdlet可用的格式?

1 个答案:

答案 0 :(得分:0)

好的,在Glen Scales的帮助下,我得到了这个。似乎PowerShell的PublicFolderIdParameter类型(Identity参数的类型)接受表示EntryID的十六进制字符序列。因此,要将EWS ID转换为PowerShell接受的ID,我们可以使用以下代码:

Folder myFolder = Folder.Bind("whatever");
var ewsId = new AlternatePublicFolderId(IdFormat.EwsId, myFolder.Id.UniqueId);
var hexId = _service.ConvertId(ewsId, IdFormat.HexEntryId) as AlternatePublicFolderId;
string idForPowerShell = hexId.FolderId;