我已经使用两个操作在Windows 2008 Server上设置了计划任务。 第一个操作是运行连接到SQL数据库并生成XML文件的应用程序。 第二个操作是运行Powershell脚本。 如果任务正确启动,则脚本仅发送一条表示任务已启动的邮件消息,并附加由数据提取应用程序创build的最新日志文件。
如果计划的任务没有启动(昨天晚上没有,而且上次运行结果显示是因为“此任务的一个实例已经在运行”),Powershell脚本不会触发,所以我们没有一封电邮。 这是任务没有运行的快速指示器,但是如果任务没有运行(尽pipe每次都可以),我希望Powershell脚本从任务调度器返回最后运行结果。 我是一个Powershell的初学者,我只是用它来expression,所以这是可能的,还是我问不可能? 还有另外一个显而易见的方法吗? 我应该只有一个计划任务,只需一个动作即可运行运行应用程序的Powershell脚本,并使用日志/上次运行详细信息触发通知电子邮件?
我已经想出了一个方法来实现这一点。 首先,我发现这篇文章监视Windows上的计划任务的最后结果 。 这包含了一个用Perl编写的关于如何获取计划任务的最后运行结果的脚本。
我设置将其转换为Powershell,这就是我得到的$taskName = "ETL" $result = (schtasks /query /FO LIST /V /TN $taskName | findstr "Result") $result = $result.substring(12) $lastResult = $result.trim()
然后,我只需将该值插入电子邮件通知。