You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Exchange管理Shell枚举取值及在C#中获取AccessRights列表

问题1:如何从Exchange管理Shell创建的枚举中获取值?
  • 单个枚举值:直接获取PSObject的Properties["枚举属性名"].Value,再强转为对应的Exchange枚举类型(如MailboxRights)。
  • 枚举集合:遍历返回的PSObject集合,对每个元素提取Value后转换为目标枚举类型,或通过PSObject.BaseObject获取原始枚举实例再转换。

问题2:C#中获取指定身份的AccessRights列表

问题分析

直接强转obj.Properties["AccessRights"].Value为MailboxRights[]失败,是因为PowerShell返回的权限集合被包装为PSObject集合或非数组类型,无法直接匹配目标数组类型。

解决代码(适配.NET Framework 2.0)

String execCommand = "Get-MailboxPermission -Identity \"{OBJECT_GUID}\"";
results = executeCommand(execCommand, ref errString);

foreach (PSObject obj in results)
{
    var accessRightsValue = obj.Properties["AccessRights"].Value;
    List<Microsoft.Exchange.Management.RecipientTasks.MailboxRights> accessRights = new List<Microsoft.Exchange.Management.RecipientTasks.MailboxRights>();

    // 处理可枚举的权限集合
    if (accessRightsValue is IEnumerable enumerableRights)
    {
        foreach (var item in enumerableRights)
        {
            if (item is PSObject psItem)
            {
                // 从PSObject中提取原始枚举实例
                var right = (Microsoft.Exchange.Management.RecipientTasks.MailboxRights)psItem.BaseObject;
                accessRights.Add(right);
            }
            else if (item is Enum enumItem)
            {
                // 直接转换为目标枚举类型
                var right = (Microsoft.Exchange.Management.RecipientTasks.MailboxRights)enumItem;
                accessRights.Add(right);
            }
        }
    }

    // 使用获取到的权限列表
    foreach (var right in accessRights)
    {
        // 示例:输出权限名称
        Console.WriteLine(right.ToString());
    }
}

关键说明

  1. 类型兼容处理:先判断权限值是否为可枚举类型,遍历每个元素并分别处理PSObject包装的枚举和直接的枚举实例。
  2. 程序集引用:确保项目已引用Exchange管理程序集Microsoft.Exchange.Management.RecipientTasks.dll,否则MailboxRights类型无法识别。
  3. .NET 2.0适配:使用List<T>替代泛型集合的其他高级特性,符合.NET 2.0语法规范。

内容的提问来源于stack exchange,提问作者Manoj A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 20:36:12