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

PowerShell中如何按SQL的BusinessDays值筛选记录并发送邮件

修正PowerShell邮件通知脚本:仅针对指定BusinessDays值的记录发送邮件

问题根源

你的脚本错误地固定使用$data.Rows[0].BusinessDays作为判断条件,导致所有记录都遵循第一条记录的业务天数结果发送邮件,无法实现按单条记录的BusinessDays值筛选发送的需求。

修正方案

核心是遍历每条查询记录,逐个判断其BusinessDays值,仅对符合条件的记录执行邮件发送逻辑。以下是修正后的代码示例:

# 假设你已通过数据库查询获取到包含目标记录的$data数据集
foreach ($row in $data.Rows) {
    # 获取当前记录的BusinessDays数值
    $currentBusinessDays = $row.BusinessDays

    # 根据需求设置判断条件:
    # - 仅发送已逾期(正值):if ($currentBusinessDays -gt 0)
    # - 仅发送未逾期(负值):if ($currentBusinessDays -lt 0)
    # - 发送所有非零记录:if ($currentBusinessDays -ne 0)
    if ($currentBusinessDays -gt 0 -or $currentBusinessDays -lt 0) {
        # 构建邮件参数,使用当前记录的字段填充内容
        $mailSettings = @{
            To          = "recipient@example.com"
            From        = "sender@example.com"
            Subject     = "业务天数通知:$($row.RecordName)"
            Body        = @"
记录ID:$($row.ID)
关联事项:$($row.Details)
业务天数:$currentBusinessDays
"@
            SmtpServer  = "smtp.yourserver.com"
            # 可按需添加其他参数:Port, Credential, UseSsl等
        }

        # 执行邮件发送
        Send-MailMessage @mailSettings
    }
}

关键修改说明

  • 用foreach ($row in $data.Rows)遍历所有查询结果,确保每条记录都被单独处理
  • 从当前循环的$row对象中获取BusinessDays,保证判断的是本条记录的实际数值
  • 按需调整if条件:根据你需要发送的是正值、负值还是非零记录,修改判断逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:05:19