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

如何通过PowerShell和MSGraphAPI将邮箱转用户GUID写入SharePoint人员字段

解决SharePoint人员字段写入问题

要让人员字段Assigned_x0020_Tech正常写入,你需要将用户主体名称(UPN)转换为符合Graph API要求的结构化格式,而非直接传入字符串。以下是具体操作步骤:

1. 获取用户的ObjectID(可选,也可直接用UPN)

若需通过UPN获取用户的Graph ObjectID,使用Get-MgUser查询(确保已通过Connect-MgGraph完成身份验证):

# 用已获取的UPN查询Graph用户
$user = Get-MgUser -Filter "userPrincipalName eq '$AssignedTech'"
$userId = $user.Id

2. 修改写入参数的人员字段格式

SharePoint人员字段需传入包含用户标识的对象数组,而非纯字符串。两种可行写法:

写法一:使用ObjectID

$params = @{
    fields = @{
        "Title"                            = "$DecomServer";
        "IP_x0020_Address"                 = "$IP";
        "Assigned_x0020_Application"       = "$Application";
        "Domain"                           = "$Domain";
        "Machine_x0020_Type"               = "$MachineType";
        "Change_x0020_Ticket_x0020_Number" = "$ChangeControl";
        "Assigned_x0020_Tech"              = @(
            @{
                "@odata.type" = "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser"
                "Id" = $userId
            }
        );
        "OSVersion"                        = "$OS";
        "DateTurnedOff"                    = Get-Date;
        "RemoveDate"                       = (Get-Date).AddDays(60)
    }
}
New-MgSiteListItem -SiteId $siteId -ListId $listId -BodyParameter $params

写法二:直接使用UPN/Email(更简便)

若你的UPN与用户邮箱一致,可直接传入Email字段,无需额外查询ObjectID:

$params = @{
    fields = @{
        "Title"                            = "$DecomServer";
        "IP_x0020_Address"                 = "$IP";
        "Assigned_x0020_Application"       = "$Application";
        "Domain"                           = "$Domain";
        "Machine_x0020_Type"               = "$MachineType";
        "Change_x0020_Ticket_x0020_Number" = "$ChangeControl";
        "Assigned_x0020_Tech"              = @(
            @{
                "@odata.type" = "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser"
                "Email" = $AssignedTech
            }
        );
        "OSVersion"                        = "$OS";
        "DateTurnedOff"                    = Get-Date;
        "RemoveDate"                       = (Get-Date).AddDays(60)
    }
}
New-MgSiteListItem -SiteId $siteId -ListId $listId -BodyParameter $params

注意:若人员字段允许多选,可在数组中添加多个用户对象;单选则保留一个元素即可。

内容的提问来源于stack exchange,提问作者Mark D. MacLachlan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 06:55:07