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

PowerShell脚本优化:仅当判定结果为True时发送邮件告警

解决PowerShell仅在判定为True时发送邮件的问题

你只需要给邮件发送逻辑加上条件判断,就能实现仅当判定结果为True时触发告警。同时可以优化原脚本里重复的文件遍历操作,提升执行效率,修改后的完整脚本如下:

# 一次性获取目录文件信息,避免重复遍历磁盘
$infraFiles = Get-ChildItem D:\Infra\ -Recurse -File
$infraDirItems = Get-ChildItem D:\Infra\

# 生成需要附加的统计文件
$infraFiles.Count > c:\temp\result.txt
$infraDirItems | Select-Object name, lastwritetime, creationTime > c:\temp\file_date_time.txt
Get-Date > c:\temp\server_time.txt

# 判定条件:目录下项目数量是否大于10,将结果存入变量
$shouldSendEmail = ($infraDirItems.Count -gt 10)

$attachments = @(
    "c:\temp\result.txt"
    "c:\temp\file_date_time.txt"
    "c:\temp\server_time.txt"
)

$mailArgs = @{
    From =          ""
    To =            ""
    Subject =       ""
    Body =          ""
    Attachments =   $attachments
    SmtpServer =    ""
    Port =          25
    UseSSL =        $true
}

# 仅当判定结果为True时执行邮件发送
if ($shouldSendEmail) {
    Send-MailMessage @mailArgs
}

关键修改说明:

  • 合并重复的Get-ChildItem调用,一次获取目录信息后复用,减少不必要的磁盘IO操作
  • 将判定条件的结果存入$shouldSendEmail变量,方便后续条件判断使用
  • 用if ($shouldSendEmail)包裹邮件发送命令,只有当判定结果为$true时才触发邮件告警

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 20:25:58