如何通过邮件发送预定脚本的状态?
How to send status of scheduled script via mail?
我创建了一个简单的 PowerShell 脚本,用于将日志文件从源移动到目标,日期为 log_present。可以通过邮件通知捕获此报告吗?
Move-Item C:\Users\hxsabe\Desktop\Test\Success_Login.txt H:\Downloads\test
Rename-Item H:\Downloads\test\Success_Login.txt "Success_Login_$(Get-Date -Format "ddMMyyyy").txt"
完成此脚本后,此脚本必须安排在 Windows 计划任务中 success/failed 任务需要电子邮件通知。
$Date = Get-Date -Format "ddMMyyyy"
$Source = "C:\Users\hxsabe\Desktop\Test"
$Destination = "H:\Downloads\test"
move-item $Source\Success_Login.txt $Destination
Rename-Item $Destination\Success_Login.txt "Success_Login_$($Date).txt"
if(Test-Path $Destination\"Success_Login_$($Date).txt")
{
Send-Mailmessage -smtp x.x.com -from x@x.com -to y@x.com -subject "My Subject"`
-Body "Logging successfull"
}
else
{
Send-Mailmessage -smtp x.x.com -from x@x.com -to y@x.com -subject "My Subject"`
-Body "Logging NOT successfull"
}
你可以用Test-Path
测试文件是否存在,然后它会发送一封电子邮件,如果它成功或不成功。
设置 $ErrorActionPreference = 'Stop'
以强制执行终止错误,运行 您的语句在 try..catch
块中,并将 Send-MailMessage
语句放在 finally
子句中。
$ErrorActionPreference = 'Stop'
try {
$src = 'C:\Users\hxsabe\Desktop\Test\Success_Login.txt'
$dst = "H:\Downloads\test\Success_Login_$(Get-Date -Format 'ddMMyyyy').txt"
Move-Item $src $dst
$msg = 'Move successful.'
} catch {
$msg = 'Move failed.'
} finally {
Send-MailMessage -Subject $msg -Body $msg ...
}
或者查看automatic variable$?
看前面的操作是否成功:
$src = 'C:\Users\hxsabe\Desktop\Test\Success_Login.txt'
$dst = "H:\Downloads\test\Success_Login_$(Get-Date -Format 'ddMMyyyy').txt"
Move-Item $src $dst
$msg = if ($?) { 'Move successful.' } else { 'Move failed.' }
Send-MailMessage -Subject $msg -Body $msg ...
我创建了一个简单的 PowerShell 脚本,用于将日志文件从源移动到目标,日期为 log_present。可以通过邮件通知捕获此报告吗?
Move-Item C:\Users\hxsabe\Desktop\Test\Success_Login.txt H:\Downloads\test
Rename-Item H:\Downloads\test\Success_Login.txt "Success_Login_$(Get-Date -Format "ddMMyyyy").txt"
完成此脚本后,此脚本必须安排在 Windows 计划任务中 success/failed 任务需要电子邮件通知。
$Date = Get-Date -Format "ddMMyyyy"
$Source = "C:\Users\hxsabe\Desktop\Test"
$Destination = "H:\Downloads\test"
move-item $Source\Success_Login.txt $Destination
Rename-Item $Destination\Success_Login.txt "Success_Login_$($Date).txt"
if(Test-Path $Destination\"Success_Login_$($Date).txt")
{
Send-Mailmessage -smtp x.x.com -from x@x.com -to y@x.com -subject "My Subject"`
-Body "Logging successfull"
}
else
{
Send-Mailmessage -smtp x.x.com -from x@x.com -to y@x.com -subject "My Subject"`
-Body "Logging NOT successfull"
}
你可以用Test-Path
测试文件是否存在,然后它会发送一封电子邮件,如果它成功或不成功。
设置 $ErrorActionPreference = 'Stop'
以强制执行终止错误,运行 您的语句在 try..catch
块中,并将 Send-MailMessage
语句放在 finally
子句中。
$ErrorActionPreference = 'Stop'
try {
$src = 'C:\Users\hxsabe\Desktop\Test\Success_Login.txt'
$dst = "H:\Downloads\test\Success_Login_$(Get-Date -Format 'ddMMyyyy').txt"
Move-Item $src $dst
$msg = 'Move successful.'
} catch {
$msg = 'Move failed.'
} finally {
Send-MailMessage -Subject $msg -Body $msg ...
}
或者查看automatic variable$?
看前面的操作是否成功:
$src = 'C:\Users\hxsabe\Desktop\Test\Success_Login.txt'
$dst = "H:\Downloads\test\Success_Login_$(Get-Date -Format 'ddMMyyyy').txt"
Move-Item $src $dst
$msg = if ($?) { 'Move successful.' } else { 'Move failed.' }
Send-MailMessage -Subject $msg -Body $msg ...