powershell - reading user/group mappings from a file -


this question has answer here:

i trying add new groups , add users groups in sharepoint using powershell. far have script task. want modify script can read text file has groups , users in format (or recommend way of doing it).

group1  user1,user2,user3 etc.   group2  user5,user7 etc. 

can please tell me how can achieve task?

add-pssnapin "microsoft.sharepoint.powershell" -erroraction silentlycontinue $siteurl = "http://www.dev.com" $web = get-spweb $siteurl  $description = "group 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(); 

unless have large input file i'd split file multiple ways:

  1. at 3 consecutive line breaks separate groups each other,
  2. at 2 consecutive line breaks separate user list group name,
  3. at commas list of user names.

something should do:

(get-content 'c:\temp\test.txt' -raw) -split "`r`n`r`n`r`n" | ? { $_ } | % {   $group, $userlist = $_ -split "`r`n`r`n"   $users = $userlist -split ','    # stuff $group , $users } 

note parameter -raw requires powershell v3 or newer. older versions use -join before -split:

(get-content 'c:\temp\test.txt') -join "`r`n" -split "`r`n`r`n`r`n" | ... 

Comments