2012-12-15 160 views
0

我有一对夫妇,其执行邮箱脚本的移动云办公365.脚本有时会失败,和其他人没有,我没有,为什么它 失败任何线索,但我想它是因为服务不可用在执行任务时,不管怎么说,问题是,这些脚本运行的计划任务和一个必须有其他的前执行 我怎么能检测如果第一个任务失败,如果是的话那就安排第二项任务。运行PowerShell脚本作为计划任务

的任务是在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

您可以使用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 
+0

感谢Kayasax获取根文件夹中的所有任务,你认为升级到PS3和使用PSScheduledJob模块将是一个有效的选项。它确实有道理? – m0dest0

+0

犯规费太多精力升级... :)我不使用模块我不能回答,可以使意义,如果你只运行PowerShell脚本的任务是什么? –

相关问题