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

如何编写PowerShell脚本监控文件夹新增文件并定时发送提醒邮件

PowerShell 文件夹监控邮件通知脚本补全优化方案

完整可运行代码

# 配置参数
$SMTPServer = "EMAIL SERVER (ip)"
$SMTPPort = "111"
$Username = "SENDER@EMAIL.COM"
$Password = "你的发件邮箱授权码/密码" # 如需身份验证请填写
$path = "C:\ROOT\BUSINESS\"
$scanIntervalMinutes = 15 # 扫描间隔,和计划任务执行周期保持一致

$to = "test1@gmail.com"
$cc = "test2@gmail.com"
$subject = "[$(Get-Date -Format 'yyyy/MM/dd HH:mm')] 业务文件夹新增文件提醒"

# 扫描指定路径下所有子文件夹的新增文件(只统计文件,排除文件夹)
$newFiles = Get-ChildItem -Path $path -Recurse -File | Where-Object { $_.LastWriteTime -ge [datetime]::Now.AddMinutes(-$scanIntervalMinutes) }

if ($newFiles.Count -gt 0) {
    # 拼接邮件正文内容
    $mailBody = "过去15分钟内共检测到 $($newFiles.Count) 个新增文件,清单如下:`r`n`r`n"
    foreach ($file in $newFiles) {
        $mailBody += "$($file.Name) uploaded to $($file.DirectoryName)`r`n"
    }

    # 初始化邮件对象
    $message = New-Object System.Net.Mail.MailMessage
    $message.Subject = $subject
    $message.To.Add($to)
    $message.CC.Add($cc)
    $message.From = $Username
    $message.Body = $mailBody

    # 初始化SMTP客户端
    $smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort)
    $smtp.EnableSSL = $true
    # 如需SMTP身份验证请取消下行注释,并填写上方的$Password变量
    # $smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password)

    # 发送邮件
    $smtp.Send($message)
    Write-Host "[$(Get-Date -Format 'yyyy/MM/dd HH:mm:ss')] 邮件发送成功,共上报 $($newFiles.Count) 个新增文件"
} else {
    Write-Host "[$(Get-Date -Format 'yyyy/MM/dd HH:mm:ss')] 过去15分钟内未检测到新增文件,无需发送邮件"
}

核心优化/补全点

  • 修复原代码语法错误:为SMTPServer变量补全$前缀,修正变量引用规范
  • 新增子文件夹扫描能力:Get-ChildItem添加-Recurse参数实现全路径遍历,添加-File参数只统计文件、排除文件夹干扰
  • 补全邮件正文生成逻辑:按照要求的格式拼接每一个新增文件的名称和对应存储路径,同时在开头新增总数统计便于快速查看
  • 优化邮件标题:添加时间戳便于识别每一次通知的扫描时段
  • 新增无新增文件时的逻辑分支:避免空邮件发送,同时输出执行日志便于排查计划任务执行情况
  • 新增身份验证配置提示:如果你的SMTP服务器需要身份验证,直接填写密码变量、取消注释凭据行即可使用

计划任务配置注意事项

  • 计划任务的执行周期设置为15分钟,和脚本内的$scanIntervalMinutes参数保持一致,避免漏统计或重复统计
  • 计划任务的执行用户需要拥有C:\ROOT\BUSINESS路径的读取权限,以及网络访问SMTP服务器的权限
  • 可以配置计划任务的"操作"参数为powershell.exe -ExecutionPolicy Bypass -File "你的脚本保存的完整路径.ps1",避免执行策略限制导致脚本运行失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 16:15:04