如何通过Az模块PowerShell脚本更新Microsoft Entra ID应用注册清单
在Az模块PowerShell脚本中为应用注册添加trustedCertificateSubjects清单配置
你可以通过以下修改后的脚本,实现创建应用注册(或检查已有应用)并更新其清单文件中的trustedCertificateSubjects配置:
param( [Parameter(Mandatory=$true)] [string]$Environment, [Parameter(Mandatory=$true)] [string]$PartnerName ) switch ($Environment) { 'test' { $PartnerAppSuffix = '-test' } 'dev' { $PartnerAppSuffix = '-dev' } } $appName = "$PartnerName$PartnerAppSuffix" # 检查应用注册是否存在(改用Get-AzADApplication获取应用对象,而非服务主体) $App = Get-AzADApplication -Filter "DisplayName eq '$appName'" if ($App -eq $null) { # 创建新的应用注册 $redirectUris = @("https://mscloud.onmicrosoft.com/$appName") $App = New-AzADApplication -DisplayName $appName ` -ReplyUrls $redirectUris ` -Homepage "https://mscloud.onmicrosoft.com/$appName" ` -IdentifierUris "https://mscloud.onmicrosoft.com/$appName" ` -Web @{ ImplicitGrantSetting = @{ EnableAccessTokenIssuance = $true EnableIdTokenIssuance = $true } } # 创建服务主体 $ServicePrincipal = New-AzADServicePrincipal -ApplicationId $App.AppId Write-Host "新应用注册已创建。AppId: $($App.AppId)" } else { Write-Host "应用注册 '$appName' 已存在。AppId: $($App.AppId)" } # 定义要添加的trustedCertificateSubjects配置 $trustedCertConfig = @( @{ authorityId = "00000000-0000-0000-0000-000000000001" subjectName = "subjectname1" revokedCertificateIdentifiers = @() }, @{ authorityId = "00000000-0000-0000-0000-000000000001" subjectName = "subjectname2" revokedCertificateIdentifiers = @() } ) # 更新应用注册的清单 Update-AzADApplication -ObjectId $App.Id -PublicClient $App.PublicClient -Web $App.Web -IdentifierUris $App.IdentifierUris ` -DisplayName $App.DisplayName -Homepage $App.Homepage -ReplyUrls $App.ReplyUrls ` -AdditionalProperties @{ trustedCertificateSubjects = $trustedCertConfig } Write-Host "应用注册 '$appName' 的trustedCertificateSubjects配置已更新"
关键修改说明:
- 替换存在性检查对象:原脚本使用
Get-AzADServicePrincipal获取服务主体,但修改应用清单需要操作应用对象,因此改用Get-AzADApplication来检查和获取应用注册。 - 添加清单更新逻辑:无论应用是新创建还是已存在,都会执行
Update-AzADApplication,通过-AdditionalProperties参数将trustedCertificateSubjects配置注入到应用清单中。 - 保留原有配置:更新时保留了应用的原有属性(如Web配置、回复URL等),避免覆盖已存在的设置。
内容的提问来源于stack exchange,提问作者Diwakar Reddy
相关产品推荐
相关产品推荐

