【问题标题】:running powershell scripts as scheduled tasks将 powershell 脚本作为计划任务运行
【发布时间】:2012-12-15 22:23:12
【问题描述】:

我有几个脚本可以在 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
}

最好的方法是什么?

谢谢,

【问题讨论】:

    标签: powershell batch-file scheduled-tasks office365


    【解决方案1】:

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

    【讨论】:

    • 感谢 Kayasax,您认为升级到 PS3 并使用 PSScheduledJob 模块是一个有效的选择。有道理吗?
    • 升级不需要花费太多精力... :) 我无法回答,因为我没有使用该模块,如果您只将 powershell 脚本作为任务运行可能有意义吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    • 2019-06-01
    • 1970-01-01
    • 2013-08-18
    • 2017-11-08
    • 2020-08-07
    • 1970-01-01
    相关资源
    最近更新 更多