Send-MailMessage -From "test@xxx.com" -To "aaa@xxx.com","bbb@xxx.com","ccc@xxx.com","ddd@xxx.com" -SmtpServer "xx.xx.xx.xx" -Subject "Test email subject" -Body "Test email body"
我想在循环中使用上面的命令编写一个脚本,说100次并每2秒运行一次并将输出写入日志文件,以后可用于分析。
问题:发送电子邮件时,我的严重问题会出现间歇性问题。我想查看日志,看看有多少电子邮件通过100个,有多少邮件失败,有什么错误信息。
答案 0 :(得分:0)
多次运行需要某种循环。 for
循环似乎最适合每个循环100,并且while
循环似乎适合循环每个集合。
由于您正在快速运行命令,因此您需要某种并行性。作业,运行空间和工作流是三种最常见的形式。工作是最容易合作的,但效率最低。
然后Start-Sleep
命令可用于试验之间的延迟。
有很多方法可以写出文件,Out-File -Append
是一种方式。 Try\catch
可用于捕获错误并将其输出到日志中。
$Iterations = 100
$Delay = 2
$StopTime = (Get-Date).AddMinutes(5)
$Command = {Send-MailMessage -From "test@xxx.com" -To "aaa@xxx.com","bbb@xxx.com","ccc@xxx.com","ddd@xxx.com" -SmtpServer "xx.xx.xx.xx" -Subject "Test email subject" -Body "Test email body"}
while ((Get-Date -le $StopTime)) {
try {
Remove-Job -State Completed
for ($i = 0; $i -lt $Iterations; $i++) {
Start-Job -ScriptBlock $command
}
"Jobs created at (Get-Date)" | Out-File "C:\example\log.txt" -Append
Start-Sleep $delay
}
catch {
$error[0] | Out-File "C:\example\log.txt" -Append
}
}