如何修改PowerShell脚本向Mailchimp导入职位与国家字段
解决Mailchimp导入Job和Country字段无数据的问题
你的脚本里有几个关键问题导致新增字段没被正确同步到Mailchimp,我来一步步帮你排查修复:
1. 先修复PowerShell哈希表的语法错误
你的$person哈希表没有正确闭合,merge_fields块和整个$person块都缺了闭合的大括号——这会直接导致脚本解析失败,根本没法传递title和Country字段。修正后的代码片段应该是这样:
$person = @{ email_address = $email status = "subscribed" merge_fields = @{ FNAME = $firstname LNAME = $lastname JOB = $title # 注意字段名要和Mailchimp后台匹配 COUNTRY = $country # 同上 } # 闭合merge_fields的大括号 } # 闭合$person的大括号
2. 严格匹配Mailchimp合并字段的别名(Tag)
Mailchimp的合并字段是大小写敏感的,而且默认用大写别名(Tag)来识别字段。你需要先登录Mailchimp后台确认:
- 进入你的受众列表 → 设置 → 合并字段
- 找到你创建的
job和country字段,查看它们的官方别名(比如job通常是JOB,country是COUNTRY) - 确保脚本里
merge_fields的键名和这个别名完全一致,否则Mailchimp会直接忽略这些不识别的字段。
3. 验证AD用户的源数据是否有值
有时候问题出在AD本身的数据上,你可以在循环里加个调试输出,确认$user.title和$user.country是否真的有内容:
Foreach ($user in $users) { $flagDown = $false Write-Host "正在处理用户: $($user.UserPrincipalName)" Write-Host "职位: $($user.title) | 国家: $($user.country)" # 新增调试输出 $Fname = $user.GivenName $Lname = $user.surname $email = $user.UserPrincipalName $title = $user.title $country = $user.country addUsertoMailChimp $email $Fname $Lname $title $country }
如果输出里职位或国家是空的,那你得检查AD用户的属性是否正确填充,或者换用AD里对应的属性(比如$user.co是国家名称,$user.c是国家代码,取决于你的AD配置)。
4. 确认addUsertoMailChimp函数的实现
最后要确保你的addUsertoMailChimp函数正确接收了$title和$country参数,并且把它们正确塞进了merge_fields里。比如函数的核心逻辑应该类似这样:
function addUsertoMailChimp($email, $firstname, $lastname, $title, $country) { $person = @{ email_address = $email status = "subscribed" merge_fields = @{ FNAME = $firstname LNAME = $lastname JOB = $title COUNTRY = $country } } # 后续的API调用逻辑,比如转JSON再发请求 $jsonBody = $person | ConvertTo-Json -Depth 3 Invoke-RestMethod -Uri "你的Mailchimp API地址" -Method Post -Body $jsonBody -Headers $headers }
按照这几步调整后,应该就能把job和country字段正确同步到Mailchimp了。
内容的提问来源于stack exchange,提问作者theking
相关产品推荐
相关产品推荐

