Powershell to get number of followers for a pericular user :


Add-PsSnapin microsoft*
$site = Get-SPSite http://yoursiteurl/
$servContext = Get-SPServiceContext($site)
$profileMgr = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($servContext)


$userpro = $profileMgr.GetUserProfile("Domain\username")
$followMgr = New-Object Microsoft.Office.Server.Social.SPSocialFollowingManager($userpro,$servContext)
$followers = $followMgr.GetFollowers()
$followerd = $followMgr.GetFollowed("Users")

$followerdSites = $followMgr.GetFollowed("Sites"




c# code :
for any perticular user

public List<int> GetFollowersAndFollowedByName(string name)
        {
  
            
            List<int> fAndf = new List<int>();
           
            var profilemgr = new Microsoft.Office.Server.UserProfiles.UserProfileManager();
            UserProfile userprofile = profilemgr.GetUserProfile("Domain\\" + name);
            var followMgr = new SPSocialFollowingManager(userprofile);
            var followers = followMgr.GetFollowers();
            var typ = Microsoft.Office.Server.Social.SPSocialActorTypes.Users;
            var followed = followMgr.GetFollowed(typ);
            int FollowersCount = followers.Count();
            int FollowedCount = followed.Count();
            fAndf.Add(FollowersCount);
            fAndf.Add(FollowedCount);


            return fAndf;
        }

for current User:

 public List<int> GetFollowersAndFollowed()
        {

            
            var instance = new PeopleManager();
            List<PersonProperties> vc = instance.GetFollowersFor("domain\\name");

            List<PersonProperties> vc1 = instance.GetPeopleFollowedBy("domain\\Name");
            List<int> fAndf = new List<int>();
            fAndf.Add(vc.Count);
            fAndf.Add(vc1.Count);
            return fAndf;
        }

For AD group :

public List<UserInfo> GetFollowersAndFollowedDetailsForAGroup(string GroupName)
        {
            var memberList = GetMembers(GroupName);
            List<UserInfo> fAndf = new List<UserInfo>();
            foreach (var name  in memberList)
            {
               
            var profilemgr = new Microsoft.Office.Server.UserProfiles.UserProfileManager();
                try
                {
                    UserProfile userprofile = profilemgr.GetUserProfile("domain\\" + name);
                    var followMgr = new SPSocialFollowingManager(userprofile);
                    var followers = followMgr.GetFollowers();
                    var typ = Microsoft.Office.Server.Social.SPSocialActorTypes.Users;
                    var followed = followMgr.GetFollowed(typ);
                    int FollowersCount = followers.Count();
                    int FollowedCount = followed.Count();
                    var UserItem = new UserInfo();
                    UserItem.Followers = FollowersCount;
                    UserItem.Following = FollowedCount;
                    UserItem.UserName = name;


                    fAndf.Add(UserItem);
                }
                catch (Exception ex)
                {
                    var message = ex.Message;
                }

            }

            return fAndf;
        }



Get Users in A Group :


  public static IEnumerable<string> GetMembers(String GroupName)
        {
            using (var client = new PSXGroup())
            {
                var memberList = GetUsersInGroup(client, GroupName).Distinct();
                return memberList.OrderBy(m => m);
            }
        }



        private static IEnumerable<string> GetUsersInGroup(PSXGroup client, string groupname)
        {
            var loginNames = new List<string>();
            try
            {
                var data = client.getMemberInfoByGroupIDorDN(groupname, string.Empty, FieldNames.GroupType);
                var members = data.Tables["Members"];
                var groups =
                    members.AsEnumerable()
                        .Where(m => m.Field<string>(FieldNames.GroupType) != string.Empty)
                        .Select(m => m.Field<string>(FieldNames.AdminAccountName)).ToList();

                //Gets users from nested AD groups 
                if (groups.Any())
                {
                    foreach (var gname in groups)
                    {
                        var results = GetUsersInGroup(client, gname);
                        loginNames.AddRange(results);
                    }
                }

                // when group type is empty you have a admin account 
                var users =
                    members.AsEnumerable()
                        .Where(u => u.Field<string>(FieldNames.GroupType) == string.Empty)
                        .Select(u => u.Field<string>(FieldNames.AdminAccountName))
                        .ToList();
                loginNames.AddRange(users);
            }
            catch (Exception e)
            {
               // HandleException(e);
            }
            return loginNames;
        }

Comments

Popular posts from this blog