this question has answer here:
- how read line file in powershell 2 answers
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:
- at 3 consecutive line breaks separate groups each other,
- at 2 consecutive line breaks separate user list group name,
- 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
Post a Comment