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