如何将Powershell脚本错误传递给任务计划程序

问题描述 投票:0回答:1

我在经常出现电源故障的环境中运行 Windows PC。因此,每次重新启动时,它都需要向我发送一封电子邮件。 我已经在任务调度程序中实现了由系统启动触发的任务。 此任务执行包含“Send-MailMessage”指令的 Powershell 脚本。 原则上这很有效,例如Windows 更新触发重启后。但是,如果发生电源故障,并且网络基础设施的恢复时间比启动 PC 的时间长,我就不会收到任何电子邮件。即使我在任务计划程序任务的设置中设置了该任务应每 5 分钟重复一次以防失败的开关,我也没有收到任何电子邮件。 我的问题是:Powershell 脚本中像“Send-MailMessage”这样的指令的失败是如何传递到任务计划程序的,而任务计划程序显然似乎没有第二次或第三次启动任务。

如果我在 shell 中运行我的脚本,模拟它无法连接到电子邮件服务器,例如通过使用错误的 smtp 服务器地址,该脚本会出现常见的失败消息。如果我在任务计划程序中使用这个修改后的脚本,它会在重新启动后显示该进程已成功执行。

传递错误以便任务调度程序知道出了问题并且会启动第二次或第三次尝试直到网络再次启动的正确机制是什么?

powershell scheduled-tasks
1个回答
0
投票

我要做的就是编写脚本来测试网络连接,然后再尝试发送电子邮件。此外,您可以添加一个计数器,并在 5 分钟后 ping 失败时让脚本退出 1。我想这也会使计划的任务正确地重新运行。

do {
$ping = test-connection google.com -count 1 -Quiet
} until ($ping)
Send-Mail -Something

这是你想要的吗?我会相应地更新我的答案:)

© www.soinside.com 2019 - 2024. All rights reserved.