Code Sample: Using the Administration Object Model
This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.
The following console application creates an itemization of the services, service instances, Web applications, content databases, site collections, and Web sites at a Windows SharePoint Services 3.0 deployment.
To use this code, create a console application project named "ComponentItemization" in Microsoft Visual Studio. Add a reference to Microsoft.SharePoint.dll. Then replace the contents of the default Program.cs file with the code below.
To run the executable, enter ComponentItemization > output.txt at a command prompt in the directory where you saved ComponentItemization.exe.
Open output.txt in any text viewer to see the output.
Note
This sample is written so that you can see references to each type of component in close proximity to references to its properties, its main child components, and its parent component. For that reason, this sample deliberately avoids encapsulating repetitive code into separate methods.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
namespace ComponentItemization
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("The Farm is: {0}\n",
SPFarm.Local.DisplayName);
SPServiceCollection myServices = SPFarm.Local.Services;
Console.WriteLine("\tThe services in the farm:\n");
// Itemize the Windows Services
Console.WriteLine("\n\n\t\tThe Windows Services:");
foreach (SPService sps in myServices)
{
if (sps is SPWindowsService)
{
Console.WriteLine("\n\t\t\tService Type Name: {0}",
sps.TypeName);
Console.WriteLine("\t\t\tService Name: {0}\n",
sps.Name);
Console.WriteLine("\t\t\tThe instances of this service:\n");
Int16 serviceInstanceNumber = 1;
SPServiceInstanceDependencyCollection
winServiceIntCol = sps.Instances;
foreach (SPServiceInstance winSerInt
in winServiceIntCol)
{
Console.WriteLine("\t\t\t\tInstance {0}:",
serviceInstanceNumber);
Console.WriteLine("\t\t\t\tInstance
DisplayName: {0}", winSerInt.DisplayName);
Console.WriteLine("\t\t\t\tInstance Name: {0}",
winSerInt.Name);
Console.WriteLine("\t\t\t\tInstance Hosting Server: "
+ GetInstanceHostingServerName(winSerInt.Server)
+ "\n");
serviceInstanceNumber++;
}
}
}
// Itemize the Web Services
Console.WriteLine("\n\n\t\tThe Web Services:");
foreach (SPService sps in myServices)
{
if (sps is SPWebService)
{
Console.WriteLine("\n\t\t\tService Type name: {0}",
sps.TypeName);
Console.WriteLine("\t\t\tService Name: {0}\n",
sps.Name);
Console.WriteLine("\t\t\tThe instances of this service:\n");
Int16 serviceInstanceNumber = 1;
SPServiceInstanceDependencyCollection
webServiceIntCol = sps.Instances;
foreach (SPServiceInstance webSerInt
in webServiceIntCol)
{
Console.WriteLine("\t\t\t\tInstance {0}:",
serviceInstanceNumber);
Console.WriteLine("\t\t\t\tInstance DisplayName: {0}",
webSerInt.DisplayName);
Console.WriteLine("\t\t\t\tInstance Name: {0}",
webSerInt.Name);
Console.WriteLine("\t\t\t\tInstance Hosting Server: "
+ GetInstanceHostingServerName(webSerInt.Server)
+ "\n");
serviceInstanceNumber++;
}
Console.WriteLine("\n\t\t\tThe Web applications in this Web service:\n");
Int32 webAppNumber = 1;
SPWebService spws = (SPWebService)sps;
foreach (SPWebApplication spwebapp
in spws.WebApplications)
{
Console.WriteLine("\t\t\t\tWeb Application {0}",
webAppNumber);
Console.WriteLine("\t\t\t\tApplication Name: {0}",
spwebapp.Name);
Console.WriteLine("\t\t\t\tApplication Display Name: {0}\n",
spwebapp.DisplayName);
webAppNumber++;
Console.WriteLine("\n\t\t\t\tThe content databases in this Web application:\n");
Int32 contentDBNumber = 1;
foreach (SPContentDatabase db
in spwebapp.ContentDatabases)
{
Console.WriteLine("\n\t\t\t\t\tContent Database {0}",
contentDBNumber);
Console.WriteLine("\t\t\t\t\tDatabase Name: {0}",
db.DisplayName);
contentDBNumber++;
Console.WriteLine("\n\t\t\t\t\t\tThe site collections in this database:\n");
Int32 siteColNumber = 1;
foreach (SPSite site in db.Sites)
{
Console.WriteLine("\n\t\t\t\t\t\t\tSite Collection {0}",
siteColNumber);
Console.WriteLine("\t\t\t\t\t\t\tSite Collection RootWeb: {0}",
site.RootWeb);
Console.WriteLine("\t\t\t\t\t\t\tSite Collection Url: {0}",
site.Url);
siteColNumber++;
Console.WriteLine("\n\t\t\t\t\t\t\tThe Web sites in this site collection:");
SPWebCollection webs = site.AllWebs;
Int64 webSiteNumber = 1;
foreach (SPWeb web in webs)
{
Console.WriteLine("\t\t\t\t\t\t\t\tWeb site {0}: {1}",
webSiteNumber, web.Name);
webSiteNumber++;
}
}
}
}
}
}
// Itemize the other services
Console.WriteLine("\n\n\t\tOther Services:");
foreach (SPService sps in myServices)
{
if (!(sps is SPWebService)
&& !(sps is SPWindowsService))
{
Console.WriteLine("\n\t\t\tService Type Name: {0}",
sps.TypeName);
Console.WriteLine("\t\t\tService Name: {0}",
sps.Name);
Console.WriteLine("\t\t\tThe instances of this service:\n");
Int16 serviceInstanceNumber = 1;
SPServiceInstanceDependencyCollection
otherServiceIntCol = sps.Instances;
foreach (SPServiceInstance otherSerInt
in otherServiceIntCol)
{
Console.WriteLine("\t\t\t\tInstance {0}:",
serviceInstanceNumber);
Console.WriteLine("\t\t\t\tInstance DisplayName: {0}",
otherSerInt.DisplayName);
Console.WriteLine("\t\t\t\tInstance Name: {0}",
otherSerInt.Name);
Console.WriteLine("\t\t\t\tInstance Hosting Server: "
+ GetInstanceHostingServerName(otherSerInt.Server)
+ "\n");
serviceInstanceNumber++;
}
}
}
// To send output to the console, uncomment the following lines:
// Console.WriteLine("Press Enter to continue.");
// Console.ReadLine();
}//end Main
private static
String GetInstanceHostingServerName(SPServer instanceHostingServer)
{
String full = instanceHostingServer.ToString();
String concise = full.Substring(full.IndexOf("=") + 1,
full.IndexOf("Parent") - (full.IndexOf("=") + 1));
return concise;
}
}
}
See Also
Reference
Concepts
Server and Site Architecture: Object Model Overview
Working with List Objects and Collections
Overview: Using the Object Model to Customize Administration
Code Sample: Using the Administration Object Model
The Content Hierarchy of Windows SharePoint Services
Background: Content Entities in Windows SharePoint Services
The Physical Objects Hierarchy of Windows SharePoint Services
Background: Physical Objects in Windows SharePoint Services
The Services Hierarchy of Windows SharePoint Services
Background: Service Entities in Windows SharePoint Services
Other Resources
Windows SharePoint Services Administration
Windows SharePoint Services Administration Development Resource Center