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

如何在Azure服务主体SAML通知邮件中追加邮箱而非替换

解决方案:Azure服务主体SAML证书通知邮箱追加问题

你的脚本核心问题在于数组处理方式错误,以及未考虑重复邮箱的情况。以下是修正后的实现方案:

修正后的PowerShell脚本

$ServicePrincipalIDs = Get-Content C:\temp\spIds.txt
$newEmail = "hello@abc.com"

Foreach($ServicePrincipalID in $ServicePrincipalIDs)
{
    $SP1 = Get-MgServicePrincipal -ServicePrincipalId $ServicePrincipalID 
    $SPDisplayName = $SP1.AppDisplayName
    
    # 获取现有通知邮箱数组,若为空则初始化空数组
    $currentEmails = $SP1.NotificationEmailAddresses ?? @()
    
    # 检查邮箱是否已存在,避免重复添加
    if ($currentEmails -notcontains $newEmail) {
        $updatedEmails = $currentEmails + $newEmail
        Update-MgServicePrincipal -ServicePrincipalId $ServicePrincipalID -NotificationEmailAddresses $updatedEmails
        Write-Host "已为服务主体 '$SPDisplayName' 追加邮箱: $newEmail"
    } else {
        Write-Host "服务主体 '$SPDisplayName' 已包含邮箱: $newEmail,无需更新"
    }
}

关键修改说明

  • 数组类型正确传递:原脚本将数组转成字符串传递给-NotificationEmailAddresses,但该参数要求输入字符串数组,修正后直接传递数组对象,确保Azure门户能正确识别并显示在独立输入框中。
  • 空值处理:使用?? @()确保当现有通知邮箱为空时,初始化一个空数组,避免后续追加操作报错。
  • 重复邮箱校验:添加-notcontains检查,防止多次运行脚本重复添加同一邮箱地址。
  • 操作日志:增加Write-Host输出,方便跟踪每个服务主体的更新状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 00:37:14