【问题标题】:Windows Task Scheduler - is it possible to distinguish manual and time-based triggered run of task?Windows 任务计划程序 - 是否可以区分手动和基于时间的触发任务运行?
【发布时间】:2014-02-20 10:58:30
【问题描述】:

我的任务计划程序中有一个任务,它只是每晚运行一些 Powershell 脚本。有时我需要手动运行此任务,如果在我的脚本中可以确定这是手动运行还是基于触发器的运行,那就太好了。

有什么办法吗?

【问题讨论】:

    标签: powershell scheduled-tasks


    【解决方案1】:

    您可以查看 schduler 事件日志:

    get-winevent Microsoft-Windows-TaskScheduler/Operational -MaxEvents 3
    

    这 100 个 ID 事件将具有启动任务的用户名,以及该实例的实例 ID (guid)。如果您想将其与脚本中的 $PID 进行匹配以验证它是当前进程,那么接下来会出现一个 200 事件,该事件具有实例 ID 和进程 ID。

    【讨论】:

      【解决方案2】:
      $t = Get-ScheduledTask "YourTaskName"
      
      if($t.State.ToString() -eq "Running"){
          # scheduled task code
      }
      else{
          # manual run code
      }
      

      【讨论】:

      • 这种方式有问题。任务本身使用特殊的用户帐户运行,该帐户在脚本中使用且无法更改。
      猜你喜欢
      • 1970-01-01
      • 2012-01-25
      • 2013-03-01
      • 2015-09-13
      • 2015-10-19
      • 2011-05-29
      • 2016-01-16
      • 1970-01-01
      • 2019-11-26
      相关资源
      最近更新 更多