Многократный запуск потребует какой-то цикл.Цикл 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
}
}