如果文件夹中的文件早于 1 分钟,则发送电子邮件,否则不要在 Powershell 中发送任何内容
Sending an email if a File in a folder is older than 1 Minute else do not send anything in Powershell
这是我的代码,如果文件存在,它会发送一封电子邮件并创建一个好的主题,但是即使没有文件,它也会连续发送电子邮件。我想使用类似 "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)
检查 $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 而不是摸索着 MailMessage
和 SmtpClient
对象。不过,一般方法是相同的。
...
$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 ...
}
这是我的代码,如果文件存在,它会发送一封电子邮件并创建一个好的主题,但是即使没有文件,它也会连续发送电子邮件。我想使用类似 "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)
检查 $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 而不是摸索着 MailMessage
和 SmtpClient
对象。不过,一般方法是相同的。
...
$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 ...
}