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

将powershell脚本作为计划任务运行,powershell,batch-file,scheduled-tasks,office365,Powershell,Batch File,Scheduled Tasks,Office365,我有两个脚本可以在office 365上执行邮箱移动到云端的操作。脚本有时会失败,而其他脚本则不会,我不知道为什么会失败 失败,但我猜这是因为在执行任务时服务不可用,无论如何,关键是这些脚本作为计划任务运行,必须有一个脚本 在其他任务之前执行,如何检测第一个任务是否失败,如果失败,则重新安排第二个任务 这些任务正在windows 2008 r2上运行powershell v2 cmdlet,因此我正在使用任务计划程序 我想知道是否应该将一些条目保存到文本文件中,以使用不同的任务计划程序,或者使用

我有两个脚本可以在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
}
最好的方法是什么

谢谢,

您可以使用来查询/启用或重新安排任务。或者您可以使用调度程序的(任务输出取决于语言)。使用一种或其他方法检查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

感谢Kayasax,您认为升级到PS3并使用PSScheduledJob模块将是一个有效的选择。这是有道理的吗?升级不会花费太多精力…:)我无法回答,因为我没有使用该模块,如果您仅将powershell脚本作为任务运行,是否有意义?