【问题标题】:reading user/group mappings from a file [duplicate]从文件中读取用户/组映射[重复]
【发布时间】:2015-06-03 04:33:12
【问题描述】:

我正在尝试使用 PowerShell 添加新组并将用户添加到 SharePoint 中的组。到目前为止,我有这个执行任务的脚本。我想修改脚本,以便它可以从具有这种格式的组和用户的文本文件中读取(或推荐另一种方式)。

Group1

User1,User2,User3 etc.


Group2

User5,User7 etc.

谁能告诉我如何完成这项任务?

Add-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue
$SiteUrl = "http://www.dev.com"
$Web = Get-SPWeb $SiteUrl

$description = "Group with contribute access."
$permissionLevel = "Contribute"

$groups = "1", "2"

foreach($groupName in $groups)
{
    $web.SiteGroups.Add($groupName, $web.SiteUsers["Test\data"], $web.SiteUsers["Test\data"], $description)  
    $group = $web.SiteGroups[$groupName]  
    $loc = Get-Location     
    $Users = "Test\data"    
    $roleAssignment = new-object Microsoft.SharePoint.SPRoleAssignment($group)  
    $roleDefinition = $web.Site.RootWeb.RoleDefinitions[$permissionLevel]  
    $roleAssignment.RoleDefinitionBindings.Add($roleDefinition)  
    $web.RoleAssignments.Add($roleAssignment)  
    $web.Update() 
    foreach ($User in $Users) { 
        $Web.EnsureUser($User)  
        Set-SPUser -Identity $User -Web $SiteUrl -Group $group  
    } 

}

$Web.Dispose();

【问题讨论】:

    标签: powershell powershell-3.0


    【解决方案1】:

    除非您的输入文件很大,否则我会以多种方式拆分文件:

    1. 在 3 个连续的换行符处将组彼此分开,
    2. 在连续 2 个换行符处将用户列表与组名分开,
    3. 以逗号获取用户名列表。

    应该这样做:

    (Get-Content 'C:\temp\test.txt' -Raw) -split "`r`n`r`n`r`n" | ? { $_ } | % {
      $group, $userlist = $_ -split "`r`n`r`n"
      $users = $userlist -split ','
    
      # do stuff with $group and $users
    }
    

    请注意,参数 -Raw 需要 PowerShell v3 或更高版本。对于旧版本,在 -split 之前使用 -join

    (Get-Content 'C:\temp\test.txt') -join "`r`n" -split "`r`n`r`n`r`n" | ...
    

    【讨论】:

    • 感谢 Ansgar 的回复,但这不能正常工作。我会用你建议的新格式更新我的问题,但它不能正常工作。 $group 名称显示所有用户值,$User 为空
    • @sp9 如果组之间有 3 个换行符,组和用户列表之间有 2 个换行符,那么当然需要相应地调整拆分模式。请参阅更新的答案。顺便说一句,如果您选择更容易处理的格式,这会简单得多,例如group1:user1,user2,user3...
    猜你喜欢
    • 2011-12-30
    • 2014-01-16
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多