【问题标题】:Powershell - Manually trigger a scheduled jobPowershell - 手动触发计划作业
【发布时间】:2016-08-10 00:31:29
【问题描述】:

我创建了一个 powershell 作业,当我使用以下命令时可以看到:

PS C:\WINDOWS\system32> Get-ScheduledJob -Name KillTicker | Get-JobTrigger

Id         Frequency       Time                   DaysOfWeek              Enabled
--         ---------       ----                   ----------              -------
1          AtStartup                                                      True

由于这是一项启动工作,我真的不想重新启动来测试它 - 如何手动启动这项工作?

【问题讨论】:

    标签: powershell scheduled-tasks


    【解决方案1】:

    如果您运行Get-ScheduledJob -id 1 | Get-Member 来检索Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition 的所有成员,您将看到该对象公开了一个名为StartJob 的方法:

    (Get-ScheduledJob -id 1).StartJob()
    

    要检索结果,请使用Receive-Job cmdlet:

    Receive-Job -id 1
    

    【讨论】:

    • 完美 - 我不知道 Get-Member 发现方法
    • 好吧,Get-Member 别名 gm 是我最常用的 cmdlet 之一 - 我想你也快了 ;-)
    【解决方案2】:

    您可以使用Start-Job cmdlet 并提供计划作业的名称作为 -DefinitionName参数。

    Start-Job -DefinitionName *MyJobName*
    

    【讨论】:

      【解决方案3】:

      我认为值得一提的是 Start-Job 或 StartJob() 都从当前安全上下文运行定义的作业。如果作业以不同用户身份运行或访问网络资源,您可能会得到意想不到的结果。

      要获得相同的行为,请使用(Get-ScheduledJob -Name xxx).RunAsTask()Start-ScheduledTask -TaskName xxx -TaskPath xxx。后者提供了-CimSession 选项,可能更适合远程操作。

      【讨论】:

        猜你喜欢
        • 2017-03-17
        • 2021-05-09
        • 1970-01-01
        • 2011-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多