映射/迁移sharepoint用户

映射/迁移sharepoint用户,sharepoint,migration,usergroups,Sharepoint,Migration,Usergroups,我目前正在测试环境中进行sharepoint迁移,现在我想将现有广告组和用户从SP 2010映射/迁移到SP 2013。现在当我研究这件事的时候,我发现了很多模糊的信息,但是关于这件事没有什么非常可靠的信息。我最好怎么做呢 假设我在一个csv文件中有以下用户,代表SP 2010环境中的用户: c:0!。s|windows i:0#.w |域名\管理员 i:0#.w|domainhere\apservice i:0#.w|domainhere\koen NT授权\本地服务 SHAREPOINT\s

我目前正在测试环境中进行sharepoint迁移,现在我想将现有广告组和用户从SP 2010映射/迁移到SP 2013。现在当我研究这件事的时候,我发现了很多模糊的信息,但是关于这件事没有什么非常可靠的信息。我最好怎么做呢

假设我在一个csv文件中有以下用户,代表SP 2010环境中的用户:

c:0!。s|windows
i:0#.w |域名\管理员 i:0#.w|domainhere\apservice
i:0#.w|domainhere\koen
NT授权\本地服务
SHAREPOINT\system
Domainhere\a服务

我应该写一个类似于以下内容的powershell脚本吗

$csv=Import csv.“\sites default.csv”
$web=获取SPWeb=”https://mymachine.mydomain"
foreach($csv中的行)
{
#如果尚未在csv中,您可以这样做来格式化您的帐户名
$username=“Domain\”+$row.key
$web.reuser($username)
$group=$web.SiteGroups |?{$\u.name-eq“GROUPNAME”}
设置SPUser-identity$username-web$web.url-group$group

}
我有一些在C#中使用CSOM的代码。它从所有列表(文档库也是列表)和站点级别读取权限,并将其写入excel

然后,它从Excel读取权限,并将其放在新的SharePoint上

Excel使用
使用OfficeOpenXml

模型

public class PermissionsToExcel
{
    public string ListTitle { get; set; }
    public string Gebruikersnaam { get; set; }
    public string Rechten { get; set; }
    public string ListUrl { get; set; }
    public bool HasUniqueRoleAssignments { get; set; }
}
从每个列表中获取组及其权限的代码:

List<PermissionsToExcel> permissionsToExcelList = new List<PermissionsToExcel>();
using (ClientContext ctx = new ClientContext(@"http://yoursharepointurl.com/"))
{
    Web web = ctx.Web;
    ctx.Load(web, w => w.HasUniqueRoleAssignments, w => w.Url);
    ctx.Load(web.RoleAssignments);
    ctx.Load(web.Lists);
    ctx.Load(web.Lists, lists => lists.Include(list => list.Title, list => list.DefaultViewUrl, list => list.RoleAssignments, list => list.RoleAssignments.Groups, list => list.HasUniqueRoleAssignments));
    ctx.ExecuteQuery();
    //Get permissions on site level
    foreach (RoleAssignment webRA in web.RoleAssignments)
    {
        ctx.Load(webRA.Member);
        ctx.Load(webRA.RoleDefinitionBindings);
        ctx.ExecuteQuery();
        foreach (RoleDefinition definition in webRA.RoleDefinitionBindings)
        {
            ctx.Load(definition);
            ctx.ExecuteQuery();
            permissionsToExcelList.Add(new PermissionsToExcel() { ListTitle = "", Gebruikersnaam = webRA.Member.LoginName, Rechten = definition.Name, ListUrl = web.Url, HasUniqueRoleAssignments = web.HasUniqueRoleAssignments });
        }
    }
    //Write down each group per list and their permissions
    foreach (List list in web.Lists)
    {
        string listUrl = list.Context.Url + list.GetWebRelativeUrl();
        foreach (RoleAssignment listRA in list.RoleAssignments)
        {
            ctx.Load(listRA.Member);
            ctx.Load(listRA.RoleDefinitionBindings);
            ctx.ExecuteQuery();
            foreach (RoleDefinition definition in listRA.RoleDefinitionBindings)
            {
                ctx.Load(definition);
                ctx.ExecuteQuery();
                permissionsToExcelList.Add(new PermissionsToExcel() { ListTitle = list.Title, Gebruikersnaam = listRA.Member.LoginName, Rechten = definition.Name, ListUrl = listUrl, HasUniqueRoleAssignments = list.HasUniqueRoleAssignments });
            }
        }
    }
}
从Excel读取权限

List<PermissionsToExcel> permissionslist = new List<PermissionsToExcel>();

FileInfo existingFile = new FileInfo(@"C:\path\Permissions.xlsx");
using (ExcelPackage package = new ExcelPackage(existingFile))
{
    //Get the first worksheet in the workbook
    ExcelWorksheet excelWorksheet = package.Workbook.Worksheets["Permissions"];
    int colCount = excelWorksheet.Dimension.End.Column;  //get Column Count
    int rowCount = excelWorksheet.Dimension.End.Row;     //get row count
    for (int row = 2; row <= rowCount; row++)//Rij 1 is de titel rij, beginnen bij rij 2
    {
        PermissionsToExcel permission = new PermissionsToExcel
        {
            ListTitle = excelWorksheet.Cells[row, 1].Value.ToString().Trim(),
            Gebruikersnaam = excelWorksheet.Cells[row, 2].Value.ToString().Trim(),
            Rechten = excelWorksheet.Cells[row, 3].Value.ToString().Trim(),
            ListUrl = excelWorksheet.Cells[row, 4].Value.ToString().Trim(),
            HasUniqueRoleAssignments = excelWorksheet.Cells[row, 5].Value.ToString().Trim().ToBoolean()
        };
        permissionslist.Add(permission);
    }
    return permissionslist;
}

我有一些在C#中使用CSOM的代码。它从所有列表(文档库也是列表)和站点级别读取权限,并将其写入excel

然后,它从Excel读取权限,并将其放在新的SharePoint上

Excel使用
使用OfficeOpenXml

模型

public class PermissionsToExcel
{
    public string ListTitle { get; set; }
    public string Gebruikersnaam { get; set; }
    public string Rechten { get; set; }
    public string ListUrl { get; set; }
    public bool HasUniqueRoleAssignments { get; set; }
}
从每个列表中获取组及其权限的代码:

List<PermissionsToExcel> permissionsToExcelList = new List<PermissionsToExcel>();
using (ClientContext ctx = new ClientContext(@"http://yoursharepointurl.com/"))
{
    Web web = ctx.Web;
    ctx.Load(web, w => w.HasUniqueRoleAssignments, w => w.Url);
    ctx.Load(web.RoleAssignments);
    ctx.Load(web.Lists);
    ctx.Load(web.Lists, lists => lists.Include(list => list.Title, list => list.DefaultViewUrl, list => list.RoleAssignments, list => list.RoleAssignments.Groups, list => list.HasUniqueRoleAssignments));
    ctx.ExecuteQuery();
    //Get permissions on site level
    foreach (RoleAssignment webRA in web.RoleAssignments)
    {
        ctx.Load(webRA.Member);
        ctx.Load(webRA.RoleDefinitionBindings);
        ctx.ExecuteQuery();
        foreach (RoleDefinition definition in webRA.RoleDefinitionBindings)
        {
            ctx.Load(definition);
            ctx.ExecuteQuery();
            permissionsToExcelList.Add(new PermissionsToExcel() { ListTitle = "", Gebruikersnaam = webRA.Member.LoginName, Rechten = definition.Name, ListUrl = web.Url, HasUniqueRoleAssignments = web.HasUniqueRoleAssignments });
        }
    }
    //Write down each group per list and their permissions
    foreach (List list in web.Lists)
    {
        string listUrl = list.Context.Url + list.GetWebRelativeUrl();
        foreach (RoleAssignment listRA in list.RoleAssignments)
        {
            ctx.Load(listRA.Member);
            ctx.Load(listRA.RoleDefinitionBindings);
            ctx.ExecuteQuery();
            foreach (RoleDefinition definition in listRA.RoleDefinitionBindings)
            {
                ctx.Load(definition);
                ctx.ExecuteQuery();
                permissionsToExcelList.Add(new PermissionsToExcel() { ListTitle = list.Title, Gebruikersnaam = listRA.Member.LoginName, Rechten = definition.Name, ListUrl = listUrl, HasUniqueRoleAssignments = list.HasUniqueRoleAssignments });
            }
        }
    }
}
从Excel读取权限

List<PermissionsToExcel> permissionslist = new List<PermissionsToExcel>();

FileInfo existingFile = new FileInfo(@"C:\path\Permissions.xlsx");
using (ExcelPackage package = new ExcelPackage(existingFile))
{
    //Get the first worksheet in the workbook
    ExcelWorksheet excelWorksheet = package.Workbook.Worksheets["Permissions"];
    int colCount = excelWorksheet.Dimension.End.Column;  //get Column Count
    int rowCount = excelWorksheet.Dimension.End.Row;     //get row count
    for (int row = 2; row <= rowCount; row++)//Rij 1 is de titel rij, beginnen bij rij 2
    {
        PermissionsToExcel permission = new PermissionsToExcel
        {
            ListTitle = excelWorksheet.Cells[row, 1].Value.ToString().Trim(),
            Gebruikersnaam = excelWorksheet.Cells[row, 2].Value.ToString().Trim(),
            Rechten = excelWorksheet.Cells[row, 3].Value.ToString().Trim(),
            ListUrl = excelWorksheet.Cells[row, 4].Value.ToString().Trim(),
            HasUniqueRoleAssignments = excelWorksheet.Cells[row, 5].Value.ToString().Trim().ToBoolean()
        };
        permissionslist.Add(permission);
    }
    return permissionslist;
}

您将遵循的流程是:

$user=Get SPUser-Identity“DOM\john.smith”-Web

移动SPUser-Identity$user-NewAlias“i:0#.w | IDD\142909”-IgnoreSid

这将迁移整个用户场。您无需致电EnsureUser

如果您正在使用用户配置文件服务应用程序,请确保您的用户帐户对UPSA具有明确的完全控制权,以便迁移用户。如果使用Windows Claims auth,我还提供了上面的示例。在Get SPUser上,您不必指定它,但在Move SPUser上,您可以指定它


您将遵循的流程是:

$user=Get SPUser-Identity“DOM\john.smith”-Web

移动SPUser-Identity$user-NewAlias“i:0#.w | IDD\142909”-IgnoreSid

这将迁移整个用户场。您无需致电EnsureUser

如果您正在使用用户配置文件服务应用程序,请确保您的用户帐户对UPSA具有明确的完全控制权,以便迁移用户。如果使用Windows Claims auth,我还提供了上面的示例。在Get SPUser上,您不必指定它,但在Move SPUser上,您可以指定它


谢谢你的回答,不过我找到了一个更简单的方法:)。请看答案。谢谢你的回答,我找到了一个更简单的方法:)。看看答案。