What I wanted to do is to use Powershell to do the equivalent of going to Site Actions->Site Settings,
Users and Permissions: Site collection administrators and then adding my team members to that list. If you are following along with your installation you will see that it does indeed call these users "Site Collection Administrators". However, do any search and you will come across articles such as "Add or remove site collection administrators (SharePoint Server 2010)" or "Add or remove site collection administrators (SharePoint Foundation 2010)" both of which clearly state "A site collection can only have two administrators ...".
Major head scratching commences. Lots of searching, swearing ...
Then I figured why not look at how the web UI does it. You will notice that the page that manages this is /_layouts/mngsiteadmin.aspx. Looking carefully I couldn't help but wonder why it's called Manage Site Admin. Subtle, but it's a clue.
Doing some searching and poking around I found that the SPWeb object has a SiteAdministrators property which as an Add() method. So, I tried calling SiteAdministrators.Add() with a user reference. There was no error, but nothing happened. So, I did more searching and eventually I came across this post: Adding more than two site collection administrators programmatically. Bingo!
Here's my code:
$sp_web = Get-SPWeb <URL>
$sp_web.AllUsers.Add("<username-1>", "<email-1>", "<name-1>", "<notes-1>")
$sp_web.AllUsers.Add("<username-2>", "<email-2>", "<name-2>", "<notes-2>")
...$sp_web.AllUsers | where { "<username-1>", "<username-2>", ... -contains $_.UserLogin } | foreach { $_.IsSiteAdmin = "True"; $_.Update() }
Here's the lesson learned. What Microsoft has been calling Site Collection Administrators really has 2 meanings:
- Site Owners and Secondary Owners
- Site Administratrators
So clear now! What I was really trying to do is to add Site Administrators.
No comments:
Post a Comment