【问题标题】:Sending an email if a File in a folder is older than 1 Minute else do not send anything in Powershell如果文件夹中的文件超过 1 分钟,则发送电子邮件,否则不要在 Powershell 中发送任何内容
【发布时间】:2020-01-25 19:24:33
【问题描述】:

这是我的代码,如果文件存在,它会发送一封电子邮件并创建一个好的主题,但是即使没有文件存在,它也会连续发送电子邮件。我想使用类似“if file.exist then smtp send”之类的东西。

$smtpServer = "test.local"
$smtpTo = "test@test.com";
$messageSubject = "Urgent check....!"
$Message = New-Object System.Net.Mail.MailMessage $smtpFrom, $smtpTo
$Message.Subject = $messageSubject
$content = Get-ChildItem '\\test\test1\test2\*.txt' |
           Where-Object {$_.LastWriteTime -lt (Get-Date).AddMinutes(-1)}
$Message.IsBodyHtml = $true
$style = "<style>BODY{font-family: Arial; font-size: 10pt;}"
$style = $style + "</style>"
$Message.Body = Get-ChildItem '\\test\test1\test2\*.txt' |
                Select-Object -Property "Name", "LastWriteTime" |
                Where-Object {$_.LastWriteTime -lt (Get-Date).AddMinutes(-1)} |
                ConvertTo-Html -Head $style
$smtp = New-Object Net.Mail.SmtpClient ($smtpServer)
$smtp.Send($message)

【问题讨论】:

    标签: powershell scripting powershell-3.0


    【解决方案1】:

    检查$content是否为空,如果不是则只发送邮件。

    ...
    $content = Get-ChildItem '\\test\test1\test2\*.txt' |
               Where-Object {$_.LastWriteTime -lt (Get-Date).AddMinutes(-1)}
    
    if ($content) {
        $Message = New-Object Net.Mail.MailMessage $smtpFrom, $smtpTo
        ...
        $Message.Body = $content |
                        Select-Object "Name", "LastWriteTime" |
                        ConvertTo-Html -Head $style
    
        $smtp = New-Object Net.Mail.SmtpClient $smtpServer
        ...
    }
    

    在较新的 PowerShell 版本中,您可以使用 Send-MailMessage cmdlet 而不是摸索MailMessageSmtpClient 对象。不过,一般方法是相同的。

    ...
    $content = Get-ChildItem '\\test\test1\test2\*.txt' |
               Where-Object {$_.LastWriteTime -lt (Get-Date).AddMinutes(-1)}
    
    if ($content) {
        $body = $content |
                Select-Object "Name", "LastWriteTime" |
                ConvertTo-Html -Head $style
    
        Send-MailMessage -To $smtpTo ... -Body $body -BodyAsHtml -SmtpServer $smtpServer ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-03
      • 2023-03-06
      • 2018-03-29
      • 1970-01-01
      • 2021-08-26
      • 1970-01-01
      • 2011-03-13
      • 2011-08-09
      相关资源
      最近更新 更多