SharePoint O365 获取具有特定角色的所有用户
SharePoint O365 Get All Users With Certain Role
有没有办法让所有 用户 在网站集和子网站级别拥有 "Full Control" 权限,并将他们的角色更改为其他角色? PowerShell 是理想的选择,但如果这是唯一的方法,CSOM 也可以。我知道我可以按角色获取组,但我需要一种方法来获取 明确添加的用户 。
我尝试了这个较旧的 Whosebug 问题: 但我在第一个 ctx.ExecuteQuery(); 上一直收到 403 禁止错误;对于所有网站,即使我是馆藏管理员。我也想知道是否有人有 PowerShell 的方法来做到这一点。
您需要 SharePoint Online 管理 shell 通过 Powershell 建立与 O365 的连接。
根据错误信息,我怀疑您的代码中缺少凭据。
请尝试下面的代码,让我知道它是否适合您。
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;
}
}
有没有办法让所有 用户 在网站集和子网站级别拥有 "Full Control" 权限,并将他们的角色更改为其他角色? PowerShell 是理想的选择,但如果这是唯一的方法,CSOM 也可以。我知道我可以按角色获取组,但我需要一种方法来获取 明确添加的用户 。
我尝试了这个较旧的 Whosebug 问题:
您需要 SharePoint Online 管理 shell 通过 Powershell 建立与 O365 的连接。
根据错误信息,我怀疑您的代码中缺少凭据。
请尝试下面的代码,让我知道它是否适合您。
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;
}
}