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

如何基于CSV文件用PowerShell发送无效AD账户通知,修复单用户显示问题

问题根源
  • 你的CSV表头仅定义了Manager、inactiveADAccount两列,列分隔符使用了;,但manager_1对应的多个无效账户也用了;分隔,导致ConvertFrom-Csv解析时,只会把第一个;后面的test_1赋值给inactiveADAccount字段,剩余的test_2、test_3会被直接丢弃,所以每封邮件只会显示1个账户。
解决方法

分两步调整即可:

  1. 调整CSV的字段内容分隔符:把同一个负责人下的多账户分隔符换成非分号的符号(比如逗号、竖线),避免和CSV列分隔符冲突,调整后的示例CSV内容如下:
Manager;inactiveADAccount
manager_1@domain.com;test_1,test_2,test_3
manager_2@domain.com.ca;test_4
  1. 修改PowerShell脚本,拆分多账户内容后再格式化邮件正文,因为你开启了-BodyAsHtml,可以直接把账户转成HTML列表样式,可读性更好。
修改后完整脚本
# 导入本地CSV文件请把下面的多行字符串替换为 Import-Csv -Path "data.csv" -Delimiter ";" 即可
$Users = 
@"
Manager;inactiveADAccount
manager_1@domain.com;test_1,test_2,test_3
manager_2@domain.com.ca;test_4
"@ | ConvertFrom-Csv -Delimiter ";"

$SMTPServer = 'mail.domain.com'
$FromAddress = New-Object System.Net.Mail.MailAddress 'me@domain.com'

ForEach($Manager in $Users) {
    # 拆分多账户,转换为HTML无序列表
    $accountList = $Manager.inactiveADAccount -split ',' | ForEach-Object { "<li>$_</li>" }
    $accountHtml = "<ul>$($accountList -join '')</ul>"

    $bodytxt = @"
<html>
<body>
<p>您好:</p>
<p>请核实以下超过30天未使用的无效账户:</p>
$accountHtml
</body>
</html>
"@

    $mailParams = @{
        From = $FromAddress
        To = $Manager.Manager
        Subject = "无效账户月度提醒"
        Body = $bodytxt
        BodyAsHtml = $true
        SmtpServer = $SMTPServer
        Priority = "High"
        Encoding = [System.Text.Encoding]::UTF8
    }
    Send-MailMessage @mailParams
}
补充说明

如果你不方便修改CSV里的账户分隔符,仍想保留;分隔多账户,可以调整导入逻辑,无需修改CSV格式:

# 替代原有ConvertFrom-Csv的逻辑,直接读取行拆分内容
$rawLines = Get-Content "data.csv"
$Users = for ($i=1; $i -lt $rawLines.Count; $i++) {
    $parts = $rawLines[$i] -split ';', 2 # 仅按第一个;拆分,后面所有内容都归为inactiveADAccount字段
    [PSCustomObject]@{
        Manager = $parts[0]
        inactiveADAccount = $parts[1]
    }
}
# 后续拆分账户时把分隔符替换为;即可:$accountList = $Manager.inactiveADAccount -split ';' | ForEach-Object { "<li>$_</li>" }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:15:03