PowerShell to Update Multi-valued People Picker Field with New Users

Requirement: Update existing People Picker field value using PowerShell in SharePoint.

PowerShell to add a new user to the existing People Picker field:

We have a field called “Team Members” in the Projects list and wanted to add new member(s) to it for a particular list item.

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
#Configuration parameters
$SiteURL = "https://portal.crescent.com/projects/"
$ListName = "Projects"                
$FieldName= "ProjectTeamMembers"

#Get site and List objects
$web = Get-SPWeb $SiteURL
$List = $web.Lists.TryGetList($ListName)

if($List -ne $null)
        #Get the Item
        $Item = $List.GetItembyID($ItemID)
        #Get Existing field value
        $MultiUserCollection = [Microsoft.SharePoint.SPFieldUserValueCollection]$item[$FieldName]
        #Prepre the user to add
        $User = $Web.EnsureUser($UserToAdd)
        $NewUser = new-object Microsoft.SharePoint.SPFieldUserValue($Web, $User.ID, $User.LoginName)
        #Update Multivalued people Picker field 
        $item[$FieldName] = $MultiUserCollection
write-host "New User Added and Existing People Picker field value updated!"     
powershell to update people picker in sharepoint

How to Set the People Picker Field using PowerShell?

The above script updates the existing people picker field value with new users, and this one sets the people picker field without updating existing values in it.

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
$SiteURL = "https://portal.crescent.com/projectpipeline/"
$ListName = "Projects"                
$FieldName= "ProjectMembers"
$TeamMembers=@("Crescent\Markb", "Crescent\Andrew")

#Get site and List objects
$web = Get-SPWeb $SiteURL
$List = $web.Lists.TryGetList($ListName)

    #Get the Item
    $Item = $List.GetItembyID(1)
    Write-Host "Processing: "$item["ProjectName"]
    #Object Array for People picker value
    $TeamMembersCollection = new-object Microsoft.SharePoint.SPFieldUserValueCollection
  #Add Each Team member to the array 
  foreach ($TeamMember in $TeamMembers)
 #Prepre the user to Add
 $User = $Web.EnsureUser($TeamMember)

 #Add new user to the collection
 $NewUser = new-object Microsoft.SharePoint.SPFieldUserValue($Web, $User.ID,$User.Name)
 #Update the field value
 $item[$FieldName] = $TeamMembersCollection
write-host "Team Member Field updated!"

Salaudeen Rajack

Salaudeen Rajack - SharePoint Expert with Two decades of SharePoint Experience. Love to Share my knowledge and experience with the SharePoint community, through real-time articles!

Leave a Reply

Your email address will not be published. Required fields are marked *