Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
One of my customer wants monitors their SharePoint environment in order to meet governance requirement.
Primary goal was generate a report of site hierarchy under a site collection including webs and libraries etc. created during specific timeframe.
Thus, I have created a small utility – a .NET console based application which will accept a site collection URL as an input parameter and generate report which will dump the information name and created date of sites and lists.
Here is the code snippet.
1: using System;
2: using System.Collections.Generic;
3: using System.Text;
4: using Microsoft.SharePoint;
5: using System.IO;
6:
7: namespace SiteInformation
8: {
9: class Program
10: {
11: static TextWriter reportfile = null;
12:
13: static void Main(string[] args)
14: {
15: try
16: {
17: reportfile = new StreamWriter("SiteInfo.csv");
18:
19: Console.WriteLine("Enter your site collection URL :");
20:
21: string strUrl = Console.ReadLine();
22:
23: SPSecurity.RunWithElevatedPrivileges(delegate()
24: {
25: using (SPSite oSite = new SPSite(strUrl))
26: {
27: using (SPWeb oRootWeb = oSite.OpenWeb())
28: {
29: SPWebCollection oWebs = oRootWeb.Webs;
30: if (oWebs.Count == 0)
31: reportfile.WriteLine("No subsites under " + oRootWeb.Name);
32: else
33: GetData(oWebs);
34: }
35: }
36: });
37:
38: }
39: catch (Exception ex)
40: {
41: Console.WriteLine(ex.Message);
42: }
43: finally
44: {
45: reportfile.Close();
46: reportfile.Dispose();
47: }
48: Console.WriteLine("Operation completed successfully !");
49: Console.ReadLine();
50: }
51:
52: static void GetData(SPWebCollection oWebs)
53: {
54: foreach (SPWeb oWeb in oWebs)
55: {
56: reportfile.WriteLine("*********************************************************");
57: reportfile.WriteLine("Site URL " + oWeb.Url);
58: reportfile.WriteLine("Site Name >> " + oWeb.Name + " || Created Date >> " + oWeb.Created.ToString());
59: GetLists(oWeb.Lists);
60:
61: if (oWeb.Webs.Count == 0)
62: reportfile.WriteLine("No subsites under " + oWeb.Name);
63: else
64: GetData(oWeb.Webs);
65: }
66: }
67:
68: static void GetLists(SPListCollection oLists)
69: {
70: foreach (SPList oList in oLists)
71: {
72: reportfile.WriteLine("List Name >> " + oList.Title + " || Created Date >> " + oList.Created.ToString());
73: }
74: }
75: }
76: }
I have attached the application in the format of a zip file with this post.