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

PowerShell新手求助:实现文件含Offline时发送带附件邮件

解决PowerShell检测关键词并发送带附件邮件的问题

嘿,作为PowerShell新手能完成生成文件和筛选内容这两步已经超棒了!咱们现在把“检测到Offline就发邮件带附件”的逻辑补上就行,一步步来:

首先先修正你现有命令里的小语法问题(路径切换的写法可以更严谨),然后添加判断和邮件发送的逻辑:

完整脚本示例

# 1. 切换到目标目录并生成状态文件
Set-Location -Path "D:\program files\veritas\volmgr\bin"
.\vmoprcmd | Out-File -Path "D:\test.data\mediastatus.txt" -Encoding UTF8

# 2. 检查文件是否包含"Offline"关键词(不用切换目录也能直接操作)
$hasOffline = Select-String -Path "D:\test.data\mediastatus.txt" -Pattern "Offline" -Quiet

# 3. 如果检测到Offline,发送带附件的邮件
if ($hasOffline) {
    # 邮件配置参数,根据你的实际情况修改
    $smtpServer = "smtp.yourdomain.com"  # 比如企业邮箱SMTP地址、smtp.office365.com
    $smtpPort = 587  # 对应SMTP服务器的端口,多数邮箱是587或465
    $sender = "your-email@domain.com"
    $recipient = "target-email@domain.com"
    $subject = "⚠️ 检测到媒体状态为Offline"
    $body = "附件为最新的媒体状态日志,请查看。"

    # 发送邮件(新手用这个命令最直观,注意替换成你的邮箱配置)
    Send-MailMessage -SmtpServer $smtpServer -Port $smtpPort `
        -From $sender -To $recipient -Subject $subject -Body $body `
        -Attachments "D:\test.data\mediastatus.txt" -UseSsl -Credential (Get-Credential)
}

关键部分解释

  • Select-String -Quiet:这个参数会直接返回$true或$false,比返回具体匹配结果更适合做条件判断,简化逻辑。
  • 路径优化:直接用绝对路径操作文件,不用频繁切换目录,减少出错概率。
  • Send-MailMessage配置:你需要替换成自己的邮箱SMTP信息,比如QQ邮箱的smtp.qq.com、端口465;-UseSsl是大多数邮箱要求的加密方式,-Get-Credential会弹出窗口让你输入邮箱密码(如果是企业邮箱可能需要应用专用密码)。

如果运行时遇到权限或SMTP连接问题,记得先确认你的邮箱是否开启了SMTP服务,以及本地防火墙是否允许PowerShell访问对应端口哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:28:31