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

求助:优化基于当前日期扫描特定扩展名文件的PowerShell脚本

嘿,这就帮你把脚本优化好,完全匹配你的需求~

优化后的PowerShell脚本

我调整了逻辑,让脚本能精准检查当日日期的子文件夹,以及里面的指定扩展名文件,只有当两种异常情况出现时才发送告警邮件:

# 定义基础路径和需要扫描的目标文件扩展名
$basePath = "\\Good\Morning\America"
$targetExtensions = @(".abc", ".def")

# 获取当日日期,格式化为和你子文件夹一致的yyyyMMdd格式
$todayDate = Get-Date -Format "yyyyMMdd"

# 安全拼接出当日的目标子文件夹路径(避免手动拼路径出问题)
$targetFolder = Join-Path -Path $basePath -ChildPath $todayDate

# 初始化告警标记和消息
$needAlert = $false
$alertMessage = ""

# 第一步:检查当日子文件夹是否存在
if (-not (Test-Path -Path $targetFolder -PathType Container)) {
    $needAlert = $true
    $alertMessage = "当日日期的子文件夹不存在:<br><b>$targetFolder</b>"
}
else {
    # 第二步:检查文件夹内是否有指定扩展名的文件
    $targetFiles = Get-ChildItem -Path $targetFolder -File -Include $targetExtensions -ErrorAction SilentlyContinue
    if (-not $targetFiles) {
        $needAlert = $true
        $alertMessage = "子文件夹存在,但未找到指定扩展名($($targetExtensions -join ', '))的文件:<br><b>$targetFolder</b>"
    }
}

# 只要触发了任一异常,就发送告警邮件
if ($needAlert) {
    # 注意:$cred需要提前定义,比如手动获取:$cred = Get-Credential -Message "输入SMTP服务器凭据"
    Send-MailMessage -To "car.one@outlook.com","car.two@gmail.com","car.three@yahoo.com" `
                     -From "Outbound@yahoo.com" `
                     -SmtpServer Smtp.office365.com `
                     -Port 587 ` # Office365 SMTP默认端口,加上更稳妥
                     -Subject "文件检查异常通知" `
                     -BodyAsHtml `
                     -Body "<p>$alertMessage</p>" `
                     -UseSSL `
                     -Credential $cred
}
关键优化点说明
  • 路径安全拼接:用Join-Path代替手动拼接路径,避免因特殊字符或格式错误导致的路径识别问题
  • 精准检查逻辑:分两步判断异常,分别给出明确的告警消息,方便你快速定位问题
  • 文件筛选更严谨:Get-ChildItem加上-File参数,确保只扫描文件而不会把文件夹误判进去
  • 代码可读性提升:用标记变量$needAlert统一控制邮件发送逻辑,后续扩展需求也更方便
注意事项
  • 确保$cred变量已正确获取(如果是自动化运行,可以考虑用存储的凭据,避免每次手动输入)
  • 测试时可以把$todayDate改成已存在的子文件夹日期(比如"20180114"),验证脚本的判断逻辑是否正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:27:00