仅当文件不为空或大于特定大小时才使用 powershell 发送电子邮件

Send email using powershell only if the file is not empty or greater than a particular size

我有这个 PS 脚本,它发送一封带有附件的电子邮件,我将在 SQL 服务器作业中 运行。

Send-MailMessage 
-From 'User01 <user01@fabrikam.com>' 
-To 'User02 <user02@fabrikam.com>', 'User03 <user03@fabrikam.com>' 
-Subject 'Sending the Attachment' 
-Body "Forgot to send the attachment. Sending now." 
-Attachments c:\temp\ibn\IBN_1_56_4960135.txt 
-Priority High  
-SmtpServer 'smtp.fabrikam.com' 

此文件为空时将为 768 字节,因此我正在尝试向其中添加一个 powershell 脚本,如果此文件大小小于或等于此大小,则不会发送电子邮件,因此,文件为空。

有什么建议吗?

我在网上找到了这个,但作为一个 Powershell 新手,它没有说明我需要将它放在脚本中的什么位置或如何放置它,因为它在文章中没有说明。

get-item c:\temp\ibn\IBN_1_56_4960135.txt | foreach -process {if ( $_.length -gt 0 ) { send mail here }} 

谢谢!

只需使用您找到的内容环绕 Send-Mail

Get-ChildItem -File -Path 'C:\path\to\myfile.txt' |
    ForEach-Object {
        if ($_.Length -gt 768) {
            Send-MailMessage 
            -From 'User01 <user01@fabrikam.com>' 
            -To 'User02 <user02@fabrikam.com>', 'User03 <user03@fabrikam.com>' 
            -Subject 'Sending the Attachment' 
            -Body "Forgot to send the attachment. Sending now." 
            -Attachments $_.FullName
            -Priority High  
            -SmtpServer 'smtp.fabrikam.com'
        }
    }