【问题标题】:Getting to UM voicemail greetings for users in o365 using PowerShell or EWS使用 PowerShell 或 EWS 为 o365 中的用户获取 UM 语音邮件问候语
【发布时间】:2018-11-27 17:44:45
【问题描述】:

希望是一个简单的问题 - 有一次我知道用户在 o365 中录制了他们对 UM 语音邮件的个人问候语(常规问候语和/或长时间缺席问候语),这些问候语是使用特殊项目类型(即“IPM”存储在他们的 Exchange 收件箱中的.Configuration.Um.CustomGreetings.External")。但是设置我的测试 o365 设置,配置 UM 等等,在记录我的个人问候语并从我的收件箱的根目录开始浏览每个项目之后,(大约 900 多个项目 - 那里有很多奇怪的东西) - 我没有再也见不到这样的事情了。很多日志、活动项目、一些消息,但没有关于问候的内容。将可以转换为电子邮件类型的所有内容提取到一个文件夹中,我遍历了每个文件夹 - 没什么希望。 任何人都知道用户 UM 的自定义问候语(不是自动助理录音 - 那是另一种野兽)已经消失以及如何获得它的任何线索?
非常感谢。

【问题讨论】:

  • 您是否尝试过onesimplescript.com/2015/07/… 似乎表明邮件存储在邮箱的Non_IPM_Root 中而不是收件箱中。
  • 是的,我在获取所有内容时从根目录开始 - 因此包含日志等的 900 多个项目 - 除非我遗漏了一些明显的东西,否则没有乐趣。
  • 它是一个 FAI 项目,所以您需要检查文件夹关联项目集合?
  • hmmm - 这对我来说是一个新概念,我必须去阅读它并去打猎,看看我能找到什么。谢谢
  • 如果您使用 EWSEditor 之类的工具,您只需右键单击相关文件夹并打开关联项目

标签: powershell exchange-server exchangewebservices office365api


【解决方案1】:

经过一番折腾后得到了这个工作。

Glen Scales 在上面的 cmets 中提供的 Ben Lye 的帖子让我从 A 到 B - 谢谢 Glen。 http://www.onesimplescript.com/2015/07/getting-um-voicemail-greetings-in.html

在相关新闻中,Glen 用于 FAI 探索的非常出色的 PowerShell 插件也非常有用,可以为您节省大量时间来了解文件夹相关信息: https://gsexdev.blogspot.com/2018/03/ews-fai-module-for-browsing-and.html

对于那些在 .NET 中使用 EWS 遇到这个问题的人来说,这里有一个快速精简的代码简介,用于为用户获取标准和扩展问候记录 - 我花了比应该更长的时间来完成这个,也许这可以为某人节省一些时间:

请注意,要针对多个邮箱运行此操作,您需要为您用于 EWS 功能进行身份验证的帐户配置模拟。

        ExchangeService _service;
        _service = new ExchangeService(ExchangeVersion.Exchange2016); // Exchange2013_SP1);
        _service.Credentials = new WebCredentials("user@domain", "myPw");
        _service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");

        //select the user you're fetching greetings for
        _service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "user@domain");

        //get the root folder for the current account
        var oParamList = new List<FolderId> {WellKnownFolderName.Root};
        var oTemp = _service.BindToFolders(oParamList, PropertySet.FirstClassProperties);
        var oRoot = oTemp.First().Folder;

        var oView = new ItemView(50)
        {
            PropertySet = new PropertySet(BasePropertySet.FirstClassProperties),
            Traversal = ItemTraversal.Associated
        };
        SearchFilter oGreetingFilter = new SearchFilter.ContainsSubstring(ItemSchema.ItemClass,
            "IPM.Configuration.Um.CustomGreetings", ContainmentMode.Substring, ComparisonMode.IgnoreCase);
        var oResults = _service.FindItems(oRoot.Id, oGreetingFilter, oView);

        //fetch the binary for the greetings as values 
        var oPropSet = new PropertySet(BasePropertySet.FirstClassProperties);
        var oRoamingBinary = new ExtendedPropertyDefinition(31753, MapiPropertyType.Binary);
        oPropSet.Add(oRoamingBinary);
        _service.LoadPropertiesForItems(oResults, oPropSet);

        var strFileName = "";
        foreach (var oItem in oResults.Items)
        {
            if (oItem.ItemClass.Equals("IPM.Configuration.Um.CustomGreetings.External",
                StringComparison.InvariantCultureIgnoreCase))
                strFileName = "jlindborg_Standard.wav";
            if (oItem.ItemClass.Equals("IPM.Configuration.Um.CustomGreetings.Oof",
                StringComparison.InvariantCultureIgnoreCase))
                strFileName = "jlindborg_Extended.wav";
            File.WriteAllBytes("d:\\" + strFileName, (byte[]) oItem.ExtendedProperties.First().Value);
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    • 2021-03-10
    • 1970-01-01
    • 2012-03-06
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多