List all SharePoint groups a user belongs to
20-Jul-2009SharePoint 2007
This is just a small Utility requested on one of the SharePoint Newsgroups.
It uses the UserGroup web service to list all the SharePoint Groups a user belongs to in a specified Site Collection.
It’s a small console application which requires two parameters:
- The first parameter is the Url of the site collection including protocol (example: http://localhost)
- The second parameter is the full username including Domain (example: MOSSWORK\user)
using System;
using System.IO;
using System.Xml;
using ListUsersGroups.ug;
namespace ListUsersGroups
{
class Program
{
static int Main(string[] args)
{
if (args.Length < 2)
return help();
try
{
UserGroup usergroup = new UserGroup();
usergroup.UseDefaultCredentials = true;
usergroup.Url = args[0]+"/_vti_bin/usergroup.asmx";;
XmlNode groupXml =usergroup.GetGroupCollectionFromUser(args[1]);
XmlDocument doc = new XmlDocument();
doc.Load(new XmlNodeReader(groupXml));
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("sp", "<a href="http://schemas.microsoft.com/sharepoint/soap/directory/">http://schemas.microsoft.com/sharepoint/soap/directory/</a>");
foreach (XmlNode group in doc.SelectNodes("//sp:Groups/sp:Group";, nsmgr))
Console.WriteLine(group.Attributes["Name"].Value);
}
catch (Exception ex)
{
Console.WriteLine("{0}\r\n{1}";, ex.Message, ex.StackTrace);
}
return 0;
}
private static int help()
{
Console.WriteLine(@"{0} ", Path.GetFileNameWithoutExtension(Environment.GetCommandLineArgs()[0]));
Console.WriteLine(@" Site-url: Url of site collection including protocol (example
<a>http://localhost)"</a>);
Console.WriteLine(@" username: Full username including domain (example MOSSWORK\user)");
return -1;
}
}
}