SharePoint Dragons

Nikander & Margriet on SharePoint

PowerShell Maxer for SharePoint 2013

Checking Capacity boundaries was made simpler using our Maxer tool (http://gallery.technet.microsoft.com/office/Maxer-for-SharePoint-2013-52208636). We decided that it would be way easier to port the code to PowerShell (and then add some). This makes it easier for everybody to add or adjust sections according to personal or company liking.

PowerShell Maxer for SharePoint 2013 is a script that checks for capacity planning limits as described per the Planning section of the TechNet Wiki SharePoint 2010 Best Practices overview page at http://social.technet.microsoft.com/wiki/contents/articles/12438.sharepoint-2013-best-practices.aspx

PowerShell Maxer for SharePoint 2013 can do the following things:

· Checks user limit in groups.

· Checks list item limits.

· Checks site user limits.

· Displays group membership.

· Displays group owners.

· Analyzes all web applications, site collections, and sites in a farm.

· Displays which features have been activated at the farm, web application, site collection, and site level.

· Checks sub site limits.

· Checks site collection limits per content db.

· Displays site collection owner and creation date.

· Lists relevant application pool names.

· Checks user limit in site collections.

To get the idea, we’ve included some code snippets.

Here’s code for counting the number of list items:

Copy code

PowerShell

Edit|Remove

function CountLists($currentWeb) 

foreach ($currentList in $currentWeb.Lists) 

  { 

$sw.WriteLine(“There are {0} items in list {1}. A max of 30,000,0000 is allowed.”, $currentList.ItemCount, $currentList.Title) 

  } 

Code for counting members in a group:

Copy code

PowerShell

Edit|Remove

function CountGroups($currentSc) 

foreach($currentGroup in $currentSc.OpenWeb().SiteGroups) 

    { 

$sw.WriteLine(“Group {0} has {1} users. A max of 5,000 is allowed.”, $currentGroup.Name, $currentGroup.Users.Count) 

    } 

Code for counting all users in a site collection:

Copy code

PowerShell

Edit|Remove

function CountUsers($currentSc) 

foreach ($currentUser in $currentSc.OpenWeb().SiteUsers) 

    { 

$sw.WriteLine(“User {0} is a member of {1} groups. A max of 5,000 is allowed.”, $currentUser.get_Name(), $currentUser.Groups.Count) 

    } 

Code for finding group owners:

Copy code

C#

Edit|Remove

function CountOwners($ownersWeb) 

foreach($ownersGroup in $ownersWeb.Groups) 

    { 

if($ownersGroup.Name -like “*Owners*”) 

        { 

            $sw.WriteLine(“”) 

            $sw.WriteLine(“The following users are a member of the {0} group:”, $ownersGroup.Name) 

foreach($ownerUser in $ownersGroup.Users) 

            { 

                $sw.WriteLine(“User: {0}”, $ownerUser.Name) 

            } 

        } 

    } 

Code for counting sub sites and displaying activated site features:

Copy code

PowerShell

Edit|Remove

function Countwebs($currentSc) 

foreach ($currentWeb in $currentSc.AllWebs) 

    { 

$sw.WriteLine(“”) 

$sw.WriteLine(“Analyzing Web site {0}”, $currentWeb.Title) 

        CountOwners $currentWeb

$sw.WriteLine(“”) 

$sw.WriteLine(“The following features are active at Web scope:”) 

$contentWebAppServices = (Get-SPFarm).services  

$webFeatures = Get-SPFeature | Where-Object {$_.Scope -eq “Web” } 

if ($webFeatures -ne $null) 

        { 

foreach ($feature in $webFeatures) 

               { 

if ((Get-SPFeature -Web $sc.Url | Where-Object {$_.Id -eq $feature.id}) -ne $null) 

                  { 

$sw.WriteLine(“Feature: {0}, Typename {1} with GUID {2} is hidden {3}”, $feature.DisplayName, $feature.TypeName, $feature.Id, $feature.Hidden) 

                  } 

               } 

        }     

$sw.WriteLine(“”) 

$sw.WriteLine(“Web site {0} has {1} sub sites. A max of 2,000 is allowed.”, $currentWeb.Title, $currentWeb.Webs.Count) 

        CountLists $currentWeb

$sw.WriteLine(“”) 

    } 

Code for counting site collections in content db’s:

function CountContentDatabases($currentWebApp)
{
foreach($currentCd in $currentWebApp.ContentDatabases)
{
  $sw.WriteLine(“Content database {0} has {1} site collections. The maximum supported is 10,000. Recommended is a maximum of 5,000.”, $currentCd.name, $currentCd.Sites.Count)
}
}

And so on… Get the full PS script via the download link at http://gallery.technet.microsoft.com/office/PowerShell-Maxer-for-cd9e13d6

About these ads

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 673 other followers

%d bloggers like this: