2016-06-01 4 views
0

Я пытаюсь автоматизировать процесс, который получает и устанавливает разрешения почтового ящика, используя удаленную оболочку PowerShell через автоматизированный конвейер обмена. Свойство AccessRights для вывода команды Get-MailboxPermission имеет тип Microsoft.Exchange.RecipientTasks.MailboxRights []. Я не могу найти это пространство имен где-нибудь в nuget, и, насколько я могу судить, он не является частью EWS api. Кто-нибудь знает, где это пространство имен можно найти, чтобы я мог ссылаться на него в моем проекте, или если есть способ сделать вывод в качестве стандартного типа объекта?Где находится Microsoft.Exchange.RecipientTasks

Спасибо

ответ

0

Удаленного 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); 
+0

Hi Glen Благодарим за ответ. Я попробовал это раньше, но попробовал еще раз и могу подтвердить, что пытается использовать Microsoft.Exchange.RecipientTasks.MailboxRights []. поскольку объект PSObject не работает с ошибкой 'can not cast as type'. Я начинаю думать, что, возможно, это невозможно :( – Adamski343

+0

Не кажется правильным для меня то, что я написал, это рабочий код. Похоже, что у вас есть проблемы где-то в другом месте (например, вы не используете удаленный powerhell, возможно, вы загрузили snapin? ?). Вы должны иметь возможность видеть типы, если вы запускаете их в отладчике. –

Смежные вопросы