将powershell脚本作为计划任务运行

时间:2012-12-15 22:23:13

标签: powershell batch-file scheduled-tasks office365

我有几个脚本在办公室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
}

最好的方法是什么?

谢谢,

1 个答案:

答案 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