使用PowerShell过滤CSV文件中的非自然人电子邮箱地址
PowerShell 筛选非自然人邮箱脚本实现方案
原有代码核心问题
- 过滤
@domain1.local域名的结果未赋值给变量,后续循环仍使用全量原始CSV数据,筛选条件未生效 - 错误匹配姓名字段,而非需求要求的邮箱前缀
- 多关键词判断写法冗余,无法灵活扩展关键词列表
- 仅导出姓名字段,未保留CSV原有完整字段结构
- 未初始化结果数组变量,存在数据拼接异常风险
正确实现代码
# 1. 导入原始CSV文件,请自行修改文件路径 $csvPath = "C:\Users\benedikt.pracht\Desktop\CVS Vergleich\Export.csv" $exportPath = "C:\Users\benedikt.pracht\Desktop\CVS Vergleich\parsedcsvdata.csv" $csvData = Import-Csv -Path $csvPath -Delimiter "," # 2. 定义需要匹配的非自然人邮箱前缀关键词,可自行增删 $filterKeywords = @("admin", "administrator", "news", "support", "fax", "info", "service") # 构建不区分大小写的正则匹配规则 $regexPattern = ($filterKeywords | ForEach-Object { [regex]::Escape($_) }) -join "|" # 3. 执行筛选:先过滤指定域名,再匹配邮箱前缀包含目标关键词的条目 $filteredResults = $csvData | Where-Object { # 匹配指定域名,可按需修改域名规则 $_.Emailaddress -match "@domain1\.local$" -and # 提取邮箱@前的前缀部分,匹配关键词 ($_.Emailaddress -split "@", 2)[0] -match $regexPattern } # 4. 导出结果为标准CSV文件,保留所有原始字段 $filteredResults | Export-Csv -Path $exportPath -NoTypeInformation -Encoding UTF8
功能说明
- 支持灵活增删过滤关键词,仅需要修改
$filterKeywords数组即可 - 默认仅匹配
@domain1.local域名的邮箱,可按需修改域名规则 - 导出结果保留CSV原始的所有字段(邮箱地址、别名、姓名等),方便后续处理
- 匹配不区分大小写,
Admin、ADMIN、admin都会被正常识别 - 如果需要精准匹配邮箱前缀完全等于关键词,可将匹配规则修改为
($_.Emailaddress -split "@", 2)[0] -match "^(?:$regexPattern)$"
内容的提问来源于stack exchange,提问作者Benedikt.P
相关产品推荐
相关产品推荐

