Microsoft.Exchange.RecipientTasks位于何处

时间:2016-06-01 09:28:24

标签: c# powershell automation exchange-server

我正在尝试通过自动交换管道自动化使用远程PowerShell获取和设置邮箱权限的进程。 Get-MailboxPermission命令输出的AccessRights属性的类型为Microsoft.Exchange.RecipientTasks.MailboxRights []。我无法在nuget的任何地方找到这个命名空间,据我所知,它似乎不是EWS api的一部分。有谁知道可以找到这个命名空间的位置,所以我可以在我的项目中引用它,或者是否有办法将输出转换为标准对象类型?

谢谢

1 个答案:

答案 0 :(得分:0)

在Remote Powershell中,您已经反序列化了类型https://blogs.msdn.microsoft.com/powershell/2010/01/07/how-objects-are-sent-to-and-from-remote-sessions/,因此服务器端类型不是您应该在此处使用的内容。您需要做的就是

        Command getmbPerms = new Command("Get-MailboxPermission");
        getmbPerms.Parameters.Add("Identity", Mailbox);
        Pipeline plPileLine = Runspace.CreatePipeline();
        plPileLine.Commands.Add(getmbPerms);
        Collection<PSObject> RsResultsresults = plPileLine.Invoke();
        foreach (PSObject obj in RsResultsresults)
        {
            Console.WriteLine(obj.Properties["User"].Value.ToString());
            PSObject AccessRights = (PSObject)obj.Properties["AccessRights"].Value;
            System.Collections.ArrayList AccessRightsCol = (System.Collections.ArrayList)AccessRights.BaseObject;
            foreach (String Permission in AccessRightsCol)
            {
                Console.WriteLine(Permission);
            }

        }
        plPileLine.Stop();

然后只需从字符串解析Enums。为用户设置权限时,AccessRights参数只是一个与服务器端枚举匹配的字符串。

        Command AddPermissions = new Command("Add-MailboxPermission");
        AddPermissions.Parameters.Add("Identity", Mailbox);
        AddPermissions.Parameters.Add("User", UserName);
        AddPermissions.Parameters.Add("AccessRights", "FullAccess");
        AddPermissions.Parameters.Add("AutoMapping", false);