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

如何通过PowerShell在Azure Function中获取AAD所有用户

在Azure Function中用PowerShell获取AAD所有用户的解决方案

1. 配置Function App的身份与权限

  • 给你的Azure Function App启用系统分配托管身份:
    1. 进入Azure Portal的Function App页面 → 左侧菜单选择「身份」
    2. 切换到「系统分配」标签,开启状态后保存
  • 添加Microsoft Graph应用权限:
    1. 在Function App左侧菜单选择「API权限」→ 点击「添加权限」
    2. 选择「Microsoft Graph」→ 「应用权限」
    3. 搜索并勾选Directory.Read.All权限,点击「添加权限」
    4. 点击「授予管理员同意」(需要全局管理员或权限管理员权限)

2. 部署Microsoft Graph模块到Function环境

Azure Function的PowerShell环境默认没有Microsoft Graph模块,有两种安装方式:

  • 方式一:通过Kudu工具安装
    1. 进入Function App的「高级工具」→ 点击「Go」进入Kudu控制台
    2. 切换到「PowerShell」终端,执行命令:
      Install-Module Microsoft.Graph -Scope CurrentUser -Force -AllowClobber
      
  • 方式二:通过requirements.psd1自动安装
    在Function的根目录创建requirements.psd1文件,内容如下:
    @{
        'Microsoft.Graph' = '2.0.0' # 可指定合适的版本号
    }
    
    部署Function时,Azure会自动安装该文件中指定的模块。

3. 编写PowerShell Function代码

以下是Http触发的示例代码,支持分页获取所有用户:

using namespace System.Net

param($Request, $TriggerMetadata)

# 借助托管身份连接Microsoft Graph
Connect-MgGraph -Identity

# 获取所有AAD用户,指定需要的属性
$allUsers = Get-MgUser -All $true -Property Id, DisplayName, UserPrincipalName, Mail, AccountEnabled

# 构造响应内容
$responseBody = $allUsers | ConvertTo-Json -Depth 10

Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
    StatusCode = [HttpStatusCode]::OK
    Body = $responseBody
})

4. 常见问题排查

  • 权限不足错误:确认已添加Directory.Read.All应用权限,且完成了管理员同意;不要使用委派权限,因为Function是后台运行,没有用户交互
  • 模块找不到错误:通过Kudu控制台执行Get-Module Microsoft.Graph -ListAvailable确认模块已安装;若用requirements.psd1,检查文件路径是否正确
  • 获取用户不全:必须加上-All $true参数,否则只会返回前100条用户数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 02:45:04