Converting Folder ID from EWS to Exchange Cmdlet's Identity

此生再无相见时 提交于 2019-12-12 05:48:21

问题


Using Managed EWS 2.0, I'm trying to write some code to create, delete and mail-enable Public Folders on Exchange 2010. However, according to Exchange MVP Glen Scales, mail-enabling a folder is only possible using PowerShell cmdlets, which can be invoked from my C# code. So far, so good.

However, I'm a bit confused when mapping between my EWS Folder objects (which have a FolderId) and PowerShell's Enable-MailPublicFolder cmdlet, which expects a GUID or a Folder Path as identity parameters. I'm not sure how to map between the two.

EWS has a ConvertIDs method, but that seems to be able to generate various formats (EwsId, EntryId, OwaId) which don't seem relevant to PowerShell.

Apart from manually generating a Folder Path from my given folder, which is easy but feels clunky given that I have an explicit identifier for the folder, is there a way to convert my Folder ID to a format usable by the Exchange Cmdlets?


回答1:


Ok, with the help of Glen Scales I got this to work. It seems that PowerShell's PublicFolderIdParameter type (the type of the Identity parameter) accepts a sequence of Hexadecimal characters representing the EntryID. So to translate an EWS ID to a PowerShell-accepted ID, we can use this code:

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;


来源:https://stackoverflow.com/questions/19383857/converting-folder-id-from-ews-to-exchange-cmdlets-identity

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!