You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PnP PowerShell填充SPO多选人员字段时遇用户未找到错误

解决SharePoint Online多选人员字段填充错误问题

问题根源

你直接把Get-PnPAzureADUser返回的完整用户对象传给了人员字段,但Add-PnPListItem对多选人员字段的输入格式有要求——必须是用户ID数组或者带特定前缀的用户登录名字符串数组,不能直接用完整的AzureADUser对象,这才触发了"用户未找到"的错误。

修正后的可用脚本

方案1:通过用户ID填充

# 初始化存储用户ID的数组
$HRCollabs = [System.Collections.ArrayList]@()
# 获取目标Azure AD用户
$testuser = Get-PnPAzureADUser -Filter { Mail eq 'test@******.com'}
# 将用户ID加入数组(用$null屏蔽Add方法的索引输出)
$null = $HRCollabs.Add($testuser.Id)
# 新增列表项并填充字段
Add-PnPListItem -List "customlist" -Values @{HRContacts= $HRCollabs; Title = '123'}

方案2:通过用户登录名填充

# 初始化存储用户登录名的数组
$HRCollabs = [System.Collections.ArrayList]@()
# 获取目标Azure AD用户
$testuser = Get-PnPAzureADUser -Filter { Mail eq 'test@******.com'}
# 构造SharePoint识别的登录名格式:i:0#.f|membership|邮箱地址
$userLogin = "i:0#.f|membership|$($testuser.Mail)"
# 将构造好的登录名加入数组
$null = $HRCollabs.Add($userLogin)
# 新增列表项并填充字段
Add-PnPListItem -List "customlist" -Values @{HRContacts= $HRCollabs; Title = '123'}

补充提示

  • 如果需要添加多个用户,重复调用$null = $HRCollabs.Add(...)即可,数组会自动存储多个ID或登录名
  • 确保目标用户已经访问过该SharePoint站点,或者被分配过站点权限(这样用户信息才会同步到站点的用户信息列表,避免找不到用户的问题)

内容的提问来源于stack exchange,提问作者John John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 21:40:21