Удаленного 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();
, а затем просто проанализировать перечисления из строки. Когда вы устанавливаете права для пользователя, параметр 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);
Hi Glen Благодарим за ответ. Я попробовал это раньше, но попробовал еще раз и могу подтвердить, что пытается использовать Microsoft.Exchange.RecipientTasks.MailboxRights []. поскольку объект PSObject не работает с ошибкой 'can not cast as type'. Я начинаю думать, что, возможно, это невозможно :( – Adamski343
Не кажется правильным для меня то, что я написал, это рабочий код. Похоже, что у вас есть проблемы где-то в другом месте (например, вы не используете удаленный powerhell, возможно, вы загрузили snapin? ?). Вы должны иметь возможность видеть типы, если вы запускаете их в отладчике. –