基于查询结果通过SSRS发送邮件及Teams消息的实现方案咨询
解决方案:基于未开机电脑数据发送提醒
方案一:PowerShell脚本(灵活可控,适合IT运维)
这是最直接的实现方式,适合有基础运维经验的场景,能直接对接查询结果,同时支持邮件和Teams消息推送。
操作步骤:
- 获取查询数据:将你的查询结果导出为CSV文件,或者直接在PowerShell中连接数据库执行查询(以SQL Server为例)
示例(读取CSV文件):$offlineDevices = Import-Csv -Path "C:\ITTools\OfflineDevices_20days.csv" - 发送邮件提醒:用
Send-MailMessage或更适配现代邮件协议的MailKit模块实现:foreach ($device in $offlineDevices) { $subject = "你的笔记本已超过20天未联网,请开机完成更新" $body = @" 您好 $($device.user_name): 你的设备「$($device.host_name)」已超过20天未开机联网,为确保Config Manager能完成系统安全更新,请尽快将设备联网开机。 最后一次在线记录:$($device.'Time Stamp') "@ Send-MailMessage -To $device.user_email -From "IT运维 <it-support@yourcompany.com>" -Subject $subject -Body $body -SmtpServer "smtp.yourcompany.com" -Port 587 -UseSsl -Credential (Get-Credential) } - 发送Teams消息:通过Teams传入Webhook实现,先在目标Teams频道创建Webhook获取URL:
$teamsWebhook = "https://outlook.office.com/webhook/xxx/xxx/xxx" foreach ($device in $offlineDevices) { $msgContent = @{ text = "**设备未开机提醒**`n用户:$($device.user_name)`n邮箱:$($device.user_email)`n设备名:$($device.host_name)`n未开机时长:$($device.DateDiff)天`n请尽快联网开机完成Config Manager更新" } | ConvertTo-Json Invoke-RestMethod -Uri $teamsWebhook -Method Post -Body $msgContent -ContentType "application/json" } - 定时执行:用Windows任务计划程序设置脚本的执行周期(比如每天凌晨),实现自动触发。
方案二:Power Automate(低代码,快速配置)
适合无编程基础的场景,通过可视化配置完成数据对接和消息推送,无需编写代码。
操作步骤:
- 创建计划流:选择「计划云流」,设置触发频率(如每天一次)。
- 获取查询数据:添加「执行SQL查询」动作,连接你的数据库,输入筛选20天以上未开机设备的查询语句,获取数据列表。
- 循环处理每条记录:添加「应用到每个」动作,遍历查询返回的所有设备数据。
- 推送提醒:
- 邮件:添加「发送电子邮件(V2)」动作,收件人选择
user_email字段,主题和正文插入设备名、未开机时长等动态内容。 - Teams消息:添加「发布消息到频道(V3)」动作,选择目标团队和频道,在消息内容中插入用户、设备等数据;或用「发送HTTP请求」调用Teams Webhook。
- 邮件:添加「发送电子邮件(V2)」动作,收件人选择
- 测试启用:验证单条数据的推送效果后,启用流即可自动定时执行。
方案三:SSRS订阅(适配现有报表体系)
如果你的团队已经在用SSRS做报表管理,可以基于现有报表配置数据驱动订阅发送邮件提醒。
操作步骤:
- 生成基础报表:基于你的查询语句创建SSRS报表,仅展示20天以上未开机的设备数据。
- 配置数据驱动订阅:
- 在报表管理器中找到该报表,创建「数据驱动订阅」。
- 设置数据源为你的查询结果,指定
user_email作为收件人字段。 - 配置邮件主题和正文,插入报表中的设备名、未开机时长等字段,可选发送纯文本提醒或报表附件。
- 设置执行频率:按需求设置订阅的执行周期(如每周一),实现自动推送。
方案选择建议
- 需要自定义复杂逻辑(如日志记录、多条件过滤):选PowerShell
- 无编程基础、追求快速搭建:选Power Automate
- 已有成熟SSRS报表体系:选SSRS数据驱动订阅
内容的提问来源于stack exchange,提问作者TheRapture
相关产品推荐
相关产品推荐

