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

如何添加ExternalEmailAddress存在性校验 避免重复创建mailContact

实现方案

你只需要在创建邮件联系人的逻辑前增加ExternalEmailAddress存在性校验即可,这里可以用Get-Recipient命令来校验该外部邮箱地址是否已经存在对应收件人对象,存在则直接跳过后续创建操作,避免报错。

修改后的完整代码

If (Test-Path $CSVFileName) {
    # 导入CSV文件
    $csvfile = Import-CSV $CSVFileName
        
    # 遍历CSV每一行数据
    foreach ($line in $csvfile) {
        try {
            # 先校验当前外部邮箱地址是否已存在对应收件人
            $existingRecipient = Get-Recipient -Filter "ExternalEmailAddress -eq '$($line.ExternalEmailAddress)'" -DomainController $dc -ErrorAction SilentlyContinue
            if ($existingRecipient) {
                # 已存在则打日志后直接跳过
                "$($line.Name) 对应的外部邮箱地址 $($line.ExternalEmailAddress) 已存在,跳过创建操作" | Out-File $logfile -Append
                continue
            }
            # 不存在则执行创建和配置操作
            New-MailContact -DomainController $dc -Name $line.Name -ExternalEmailAddress $line.ExternalEmailAddress -OrganizationalUnit $OU -ErrorAction Stop
            Set-Contact -DomainController $dc -Identity $line.Name -Department $line.Department -Title "Sales Team" -StreetAddress $line.StreetAddress -City $line.City -StateOrProvince $line.StateOrProvince -PostalCode $line.PostalCode -Office $line.Office -CountryOrRegion $line.CountryOrRegion
            "$($line.Name) 创建成功" | Out-File $logfile -Append
        }
        catch {
            $message = "创建联系人 $($line.Name) 时出现问题"
            $message | Out-File $logfile -Append
            Write-Warning $message
            Write-Warning $_.Exception.Message
            $_.Exception.Message | Out-File $logfile -Append
        }
    }
}

注意事项

  • 校验时指定了和创建操作相同的域控制器,避免跨域控同步延迟导致的误判
  • 过滤条件严格匹配外部邮箱地址,不会受联系人名称重复的影响
  • 新增了已存在场景的日志记录,方便后续核查处理结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:27:02