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

求助:使用PowerShell创建含客户端密钥与API权限的Azure应用遇模块问题

在Azure中创建带客户端密钥和API权限的应用脚本方案

使用Microsoft Graph PowerShell模块(MgGraph)完整实现

Microsoft Graph PowerShell是AzureAD模块的官方替代方案,可一站式完成所有操作,推荐使用。

1. 准备工作:安装模块并登录

# 安装Beta模块(若未安装)
Install-Module Microsoft.Graph.Beta -Force -AllowClobber

# 导入应用管理相关模块
Import-Module Microsoft.Graph.Beta.Applications

# 交互式登录,请求必要权限
Connect-MgGraph -Scopes "Application.ReadWrite.All", "Directory.ReadWrite.All" -Interactive

2. 创建Azure AD应用

$appName = "你的应用名称"
$myApp = New-MgBetaApplication -DisplayName $appName

3. 添加客户端密钥

$startDate = Get-Date
$endDate = $startDate.AddYears(1)

# 创建客户端密钥并设置有效期
$appSecret = New-MgBetaApplicationPassword -ApplicationId $myApp.Id -PasswordCredential @{
    DisplayName = "Access"
    StartDateTime = $startDate
    EndDateTime = $endDate
}

# 注意:密钥值仅在创建时可见,务必保存
Write-Host "客户端密钥值: $($appSecret.SecretText)"

4. 添加API权限

以添加Microsoft Graph的User.Read.All应用权限为例:

# 获取Microsoft Graph服务主体
$graphSp = Get-MgBetaServicePrincipal -Filter "displayName eq 'Microsoft Graph'"

# 定位目标权限(应用权限)
$targetPermission = $graphSp.AppRoles | Where-Object {
    $_.Value -eq "User.Read.All" -and $_.AllowedMemberTypes -contains "Application"
}

# 为应用添加API权限
New-MgBetaApplicationPermissionGrant -ApplicationId $myApp.Id -ResourceId $graphSp.Id -Scope $targetPermission.Value

5. 授予管理员同意(应用权限必填)

如果添加的是应用权限,需完成管理员同意才能生效:

New-MgBetaOauth2PermissionGrant -ClientId $myApp.Id -ResourceId $graphSp.Id -Scope $targetPermission.Value -ConsentType "AllPrincipals"

使用AzureAD模块添加API权限的方法

若仍需使用AzureAD模块,可通过以下代码补充API权限配置:

# 获取Microsoft Graph服务主体
$graphSp = Get-AzureADServicePrincipal -Filter "DisplayName eq 'Microsoft Graph'"

# 定位目标权限
$targetPermission = $graphSp.AppRoles | Where-Object {
    $_.Value -eq "User.Read.All" -and $_.AllowedMemberTypes -contains "Application"
}

# 构建权限对象
$requiredAccess = New-Object Microsoft.Open.AzureAD.Model.RequiredResourceAccess
$requiredAccess.ResourceAppId = $graphSp.AppId
$requiredAccess.ResourceAccess = New-Object Microsoft.Open.AzureAD.Model.ResourceAccess($targetPermission.Id, "Role")

# 更新应用的API权限
Set-AzureADApplication -ObjectId $myApp.ObjectId -RequiredResourceAccess $requiredAccess

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 16:38:31