2016-03-04 5 views
0

Есть ли способ получить все пользователей, у которых есть разрешение «Полный доступ» на уровне семейства сайтов и на уровне дочерних сайтов и изменить их роль на что-то еще? PowerShell был бы идеален, но CSOM тоже было бы неплохо, если это единственный способ сделать это. Я знаю, что могу получить группы по ролям, но мне нужен способ получить явно добавленных пользователей.SharePoint O365 Получить всех пользователей с определенной ролью

Я пробовал этот старый вопрос StackOverflow: Get all the users based on a specific permission using CSOM in SharePoint 2013, но я продолжаю получать запрещенную ошибку 403 на первом ctx.ExecuteQuery(); для всех сайтов, хотя я администратор коллекции. Я также задаюсь вопросом, есть ли у кого-нибудь способ PowerShell.

ответ

0

По сообщение об ошибке, я подозреваю, что полномочие отсутствует в вашем коде.

Пожалуйста, попробуйте код, указанный ниже, и дайте мне знать, будет ли он работать на вашей стороне.

static void Main(string[] args) 
    { 
     var webUrl = "[your_site_url]"; 

     var userEmailAddress = "[your_email_address]"; 

     using (var context = new ClientContext(webUrl)) 
     { 
      Console.WriteLine("input your password and click enter"); 

      context.Credentials = new SharePointOnlineCredentials(userEmailAddress, GetPasswordFromConsoleInput()); 
      context.Load(context.Web, w => w.Title); 
      context.ExecuteQuery(); 

      Console.WriteLine("Your site title is: " + context.Web.Title); 

      //Retrieve site users    
      var users = context.LoadQuery(context.Web.SiteUsers); 

      context.ExecuteQuery(); 

      foreach(var user in users) 
      { 
       Console.WriteLine(user.Email); 
      } 
     } 
    } 

    private static SecureString GetPasswordFromConsoleInput() 
    { 
     ConsoleKeyInfo info; 

     SecureString securePassword = new SecureString(); 
     do 
     { 
      info = Console.ReadKey(true); 
      if (info.Key != ConsoleKey.Enter) 
      { 
       securePassword.AppendChar(info.KeyChar); 
      } 
     } 
     while (info.Key != ConsoleKey.Enter); 

     return securePassword; 
    } 
} 
+0

Спасибо, Джеффри! Не могу поверить, что я пропустил это. – StraighterSwing

0

Вам необходимо, чтобы оболочка SharePoint Online Management поддерживала соединение с O365 через Powershell.

Introduction to the SharePoint Online management shell

+0

Благодарим за это, но я уже установил это. Поскольку я упоминал исходное сообщение, я могу успешно сменить групповые роли, которые просто не получают и \ или не устанавливают роли пользователя. – StraighterSwing