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

是否有API获取M365新增用户代词?如何同步至AD?

获取Microsoft 365用户代词的可行方案

一、Microsoft Graph API(推荐方式)

Microsoft 365的用户代词数据可通过Microsoft Graph API的用户资源获取,对应字段为pronouns。

1. 权限要求

根据使用场景选择以下权限之一:

  • User.Read.All(应用权限,支持批量读取)
  • User.ReadBasic.All(应用权限)
  • User.Read(委托权限,读取当前用户数据)
  • User.ReadWrite(委托权限,支持读取和修改)

2. 请求示例

获取单个用户代词

GET https://graph.microsoft.com/v1.0/users/{user-id}/pronouns

响应示例:

{
  "value": "she/her"
}

批量获取用户代词

GET https://graph.microsoft.com/v1.0/users?$select=id,displayName,pronouns

3. PowerShell调用示例(基于Microsoft Graph PowerShell模块)

先完成模块安装与连接:

Install-Module Microsoft.Graph.Users -Force
Connect-MgGraph -Scopes "User.Read.All"

获取单个用户代词:

Get-MgUserPronoun -UserId "user@example.com"

批量筛选并获取用户代词:

Get-MgUser -Filter "pronouns ne null" -Select Id,DisplayName,Pronouns | Format-Table DisplayName,Pronouns

二、Exchange Web Services (EWS)

根据官方说明,代词存储在Exchange邮箱的扩展属性中,可通过EWS访问获取。

1. 权限准备

需为应用分配目标用户邮箱的FullAccess权限,或使用委托权限进行访问。

2. PowerShell示例(使用EWS Managed API)

# 加载EWS Managed API库
Add-Type -Path "C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll"

$ewsUrl = "https://outlook.office365.com/EWS/Exchange.asmx"
$username = "admin@example.com"
$password = ConvertTo-SecureString "你的密码" -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($username, $password)

$service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService([Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2016)
$service.Credentials = $credential
$service.Url = New-Object System.Uri($ewsUrl)

# 指定目标用户邮箱
$mailbox = New-Object Microsoft.Exchange.WebServices.Data.Mailbox("user@example.com")
$folderId = New-Object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Root, $mailbox)

# 定义代词对应的扩展属性ID
$pronounProperty = New-Object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition(0x7A0A, [Microsoft.Exchange.WebServices.Data.MapiPropertyType]::String)

# 加载并读取扩展属性
$folder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service, $folderId, [Microsoft.Exchange.WebServices.Data.PropertySet]::FirstClassProperties)
$folder.Load([Microsoft.Exchange.WebServices.Data.PropertySet]::CreateFromPropertyDefinitions([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties, $pronounProperty))

# 输出代词数据
if ($folder.ExtendedProperties.Contains($pronounProperty)) {
    Write-Host "用户代词: " $folder.ExtendedProperties[$pronounProperty].Value
}

三、关于Exchange Online PowerShell模块

当前ExchangeOnlineManagement模块的Get-Mailbox命令无法直接返回代词数据,因为该数据未暴露在邮箱常规属性中。若需通过Exchange PowerShell获取,可结合上述EWS方案,或优先使用Microsoft Graph的实现方式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 00:32:25