Recently, I had a need to basically remove “Home” tab from global navigation for all the sites (Site collections) in a web application. Here is a quick code snippet that basically does that.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint.Publishing;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
using Microsoft.SharePoint.Navigation;
namespace GlobalNavigationRemove
{
    class Program
    {
        static void Main(string[] args)
        {
            string webAppUrl = string.Empty;
            int iCounter = 0;
            int iNbrOfSites = 0;
            if (args.Length > 0)
            {
                Console.WriteLine(string.Format("Web Application: {0}", args[0]));
                webAppUrl = args[0].ToString();
                if (args.Length > 1)
                {
                    Console.WriteLine(string.Format("Test Iteration: {0}", args[1]));
                    iNbrOfSites = int.Parse(args[1].ToString());
                }
            }
            SPWebApplication webApp = SPWebApplication.Lookup(new Uri(webAppUrl));
            Console.WriteLine(string.Format("Total Site collections detected: {0}" , webApp.Sites.Count.ToString()));
            Console.WriteLine(string.Format("*************************************Starting the removal ********************************"));
               
                foreach (SPSite siteCollection in webApp.Sites)
                {
                    if (iCounter > iNbrOfSites && iNbrOfSites != 0)
                    {
                        return;
                    }                   
                    PublishingWeb myPublishingWeb = PublishingWeb.GetPublishingWeb(siteCollection.OpenWeb());
                    Console.WriteLine(string.Format("Now Processing : {0}", myPublishingWeb.Title));
                    SPNavigationNodeCollection publishingNavigationNodes = myPublishingWeb.Navigation.GlobalNavigationNodes;
                    try
                    {
                        SPWeb web = siteCollection.OpenWeb();
                        SPNavigationNodeCollection webNavigationNodes = web.Navigation.TopNavigationBar;
                       

                        foreach (SPNavigationNode node in webNavigationNodes)
                        {
                            if (node.Title.Trim().ToLower() == "home")
                            {
                                node.Delete();
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(string.Format("Exception Occurred while processing site {0} \n\n", ex.ToString()));
                    }
                    iCounter++;

            }
        }
    }
}