我有几个脚本在办公室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
}
最好的方法是什么?
谢谢,
答案 0 :(得分:0)
您可以使用schtasks.exe查询/启用或重新安排任务。或者您可以使用调度程序的COM object(注意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