Get and Set User Profile Properties using Console Application in SharePoint Online
File -> New -> Project -> Installed -> Templates -> Visual C# -> Windows -> Console Application ->Enter Name (UserProfilePropertySync)
Go to UserProfilePropertySync -> References -> Add Referece
Add below three dlls. Make sure add 16 version dlls.
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.Runtime;
using Microsoft.SharePoint.Client.UserProfiles;
Make sure here we are adding 16th version dlls.
Go to UserProfilePropertySync -> Open Program.cs
add below code
-------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Security;
using System.Net;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.UserProfiles;
namespace UserProfilePropertySync
{
class Program
{
static void Main(string[] args)
{
try
{
string tenantAdminUrl = GetString("Enter
your tenant admin url (https://tenantname-admin.sharepoint.com): ");
string tenantAdminUser = GetString("Enter your tenant admin user
(user@tenantname.onmicrosoft.com): ");
PersonProperties personProperties = null;
SecureString tenantAdminPassword = GetPassword();
string userToUpdate = "i:0#.f|membership|" + tenantAdminUser;
using (ClientContext clientContext = new ClientContext(tenantAdminUrl))
{
clientContext.Credentials =
new SharePointOnlineCredentials(tenantAdminUser,
tenantAdminPassword);
PeopleManager
peopleManager = new PeopleManager(clientContext);
string userProfileProperty
= "AboutMe";
personProperties = peopleManager.GetPropertiesFor(userToUpdate);
clientContext.Load(personProperties, p => p.UserProfileProperties);
clientContext.ExecuteQuery();
foreach (var property in
personProperties.UserProfileProperties)
{
if (property.Key ==
userProfileProperty)
Console.WriteLine("Current value of the {0} property for user
{1}:{2}", userProfileProperty,
userToUpdate, property.Value.ToString());
}
string newAboutMeValue =
GetString(String.Format("Enter a new value to be set for property {0}:", userProfileProperty));
Console.WriteLine("Setting new value...");
peopleManager.SetSingleValueProfileProperty(userToUpdate,
userProfileProperty, newAboutMeValue);
personProperties =
peopleManager.GetPropertiesFor(userToUpdate);
clientContext.Load(personProperties, p => p.UserProfileProperties);
clientContext.ExecuteQuery();
foreach (var property in
personProperties.UserProfileProperties)
{
if (property.Key ==
userProfileProperty)
{
Console.WriteLine("Current value of the {0} property for user
{1}:{2}", userProfileProperty,
userToUpdate, property.Value.ToString());
}
}
}
Console.WriteLine("Press any
key to continue.");
Console.Read();
}
catch (Exception ex)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(string.Format("Exception!"), ex.ToString());
Console.WriteLine("Press any
key to continue.");
Console.Read();
throw;
}
}
public static string GetString(string question)
{
string userInput = string.Empty;
try
{
Console.Write(question);
userInput = Console.ReadLine();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
userInput = string.Empty;
}
return userInput;
}
public static SecureString GetPassword()
{
SecureString sStrPwd = new SecureString();
try
{
Console.Write("Enter the
SharePoint Tenant Admin password: ");
for (ConsoleKeyInfo keyInfo = Console.ReadKey(true); keyInfo.Key != ConsoleKey.Enter; keyInfo = Console.ReadKey(true))
{
if (keyInfo.Key == ConsoleKey.Backspace)
{
if (sStrPwd.Length > 0)
{
sStrPwd.RemoveAt(sStrPwd.Length - 1);
Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop);
Console.Write(" ");
Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop);
}
}
else if (keyInfo.Key != ConsoleKey.Enter)
{
Console.Write("*");
sStrPwd.AppendChar(keyInfo.KeyChar);
}
}
Console.WriteLine("");
}
catch (Exception e)
{
sStrPwd = null;
Console.WriteLine(e.Message);
}
return sStrPwd;
}
}
}
-------------------------------------------------------------
Press F5 to run and enter required input.
No comments:
Post a Comment