0

我有几个脚本可以将邮箱移动到 Office 365 上的云。这些脚本有时会失败,而其他脚本则不会,我不知道为什么会失败,但我想这是因为在执行任务时服务不可用无论如何,关键是这些脚本作为计划任务运行,并且必须在其他任务之前执行,我如何检测第一个任务是否失败,如果是,则重新安排第二个任务。

这些任务在 Windows 2008 r2 上运行 powershell v2 cmdlet,所以我使用的是任务计划程序。

我想知道是否应该将一些条目保存到文本文件中,以使用不同的任务调度程序,或者使用 powershell 运行每个作业,方式如下:

foreach ($script in $scripts)
{
    #check status in a text file
    $job = start-job -Filepath c:\myscript.ps1 -AsJob
    Wait-Job $job -Timeout 180
}

最好的方法是什么?

谢谢,

4

1 回答 1

0

您可以使用schtasks.exe来查询/启用或重新安排您的任务。或者您可以使用调度程序的COM 对象(注意 schtasks 输出取决于语言)。使用一种或其他方法检查 lastTaskResult 并重新安排您的其他任务。

例子:

使用 COM 对象获取根文件夹的所有任务

icm -AsJob -JobName getTasks -ComputerName $computername  -ScriptBlock{
    $Schedule = new-object -com("Schedule.Service")
    $Schedule.connect($env:computername)
    $Tasks = $Schedule.getfolder("\").gettasks(0)
    $Tasks | Select-Object  Name,Path,State,Enabled,LastRunTime,LastTaskResult 
    }

使用 schtasks 获取特定任务

schtasks /query /TN "\Microsoft\Windows\Autochk\Proxy" /v /fo csv  |ConvertFrom-Csv
于 2012-12-17T06:39:45.170 回答