Powershell Register-ScheduledTask创建/更新任务

时间:2017-08-22 10:39:08

标签: powershell scheduled-tasks

我正在寻找一个在创建/更新任务后立即运行的选项。

此任务在任务计划程序用户界面中可用,但我无法在New-ScheduledTaskTrigger中找到相同的选项。如何使用Powershell实现相同目的?

1 个答案:

答案 0 :(得分:2)

您需要的是RegistrationTrigger,我知道 - 不能简单地使用New-ScheduledTaskTrigger创建。但可以使用Get-CimClass

创建
$trigger = Get-CimClass "MSFT_TaskRegistrationTrigger" -Namespace "Root/Microsoft/Windows/TaskScheduler"

其他信息:

正如帮助告诉我们的那样,我们可以使用-Trigger传递多个触发器:

-Trigger [<CimInstance[]>]
    Specifies an array of one or more trigger objects that cause a scheduled task to start.

这意味着,以下内容将创建一个在创建后立即执行的任务以及每次更新 注册后执行的任务:

$trigger1 = New-ScheduledTaskTrigger -Daily -DaysInterval 1 -At 01:00
$trigger2 = Get-CimClass "MSFT_TaskRegistrationTrigger" -Namespace "Root/Microsoft/Windows/TaskScheduler"
New-ScheduledTask -Action $action -Trigger @($trigger1, $trigger2) -Description "Beschreibung" -Settings $settings -Principal $principal | Register-ScheduledTask -TaskName "test"

现在 - 将创建的任务导出到xml文件时,它将如下所示:

<Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
    <RegistrationInfo>
        <Description>Beschreibung</Description>
        <URI>\test</URI>
    </RegistrationInfo>
    <Triggers>
        <RegistrationTrigger>
            <Enabled>true</Enabled>
        </RegistrationTrigger>
        <CalendarTrigger>
            <StartBoundary>2017-08-22T01:00:00+02:00</StartBoundary>
            <Enabled>true</Enabled>
            <ScheduleByDay>
                <DaysInterval>1</DaysInterval>
            </ScheduleByDay>
        </CalendarTrigger>
    </Triggers>
    <Principals>
        <Principal id="Author">
[...]