PowerShell邮件脚本优化:过滤缺失日志,仅发送可用日志附件
PowerShell脚本优化:自动过滤缺失的日志附件
你可以通过添加文件存在性校验逻辑来实现需求,过滤掉数组中不存在的文件,只将实际存在的日志作为附件发送。修改后的脚本如下:
$User = "Email_DL"; $Recipients = @("user1.xyz.com","user2.xyz.com"); $Password = ""; # 定义所有可能的日志文件路径 $allAttachmentPaths = @( "\\Server1\Files\FilesMissing.log" "\\Server1\Files\FilesCopied.log" "\\Server1\Files\Output.log" "\\Server1\Files\CAS\CAS_FLDFilesCopied.log" "\\Server1\Files\CAS\CAS_FLDFilesMissing.log" "\\Server1\Files\CAS\CAS_FLD_Output.log" ); # 过滤出实际存在的文件 $validAttachments = $allAttachmentPaths | Where-Object { Test-Path $_ -PathType Leaf } # 发送邮件,仅携带存在的日志文件 Send-MailMessage -From $User -To $Recipients -SMTPServer "XXXXXXXX" ` -Body "日志文件如下" -Subject "Replication test" ` -Attachments $validAttachments
关键逻辑说明
Test-Path $_ -PathType Leaf:校验当前路径是否为存在的文件(排除文件夹),确保只筛选出真实存在的日志文件。- 自动过滤后,
$validAttachments数组只会保留存在的文件,包括你提到的必选输出日志(Output.log和CAS_FLD_Output.log),因为这两个文件在任何场景下都会生成。 - 修正了原脚本中
Send-MailMessage末尾多余的点号,避免语法错误。
内容的提问来源于stack exchange,提问作者Puneet Tiwari
相关产品推荐
相关产品推荐

