You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell获取每月计划任务的运行月份与日期?

获取计划任务的每月触发器详细信息

要提取每月计划任务的运行月份选择和具体日期,关键是访问触发器对象的MonthlySettings属性——该属性仅对Monthly类型的触发器有效,下面是具体的PowerShell操作方案:

核心代码示例

Get-ScheduledTask | Where-Object { $_.Triggers -ne $null } | ForEach-Object {
    $task = $_
    foreach ($trigger in $task.Triggers) {
        # 仅处理每月触发器
        if ($trigger.Type -eq 'Monthly') {
            [PSCustomObject]@{
                TaskName        = $task.TaskName
                TaskPath        = $task.TaskPath
                # 选中的月份(数组形式,1=1月,12=12月)
                SelectedMonths  = $trigger.MonthlySettings.MonthsOfYear
                # 运行日期:区分固定日期/每月最后一天
                RunDate         = if ($trigger.MonthlySettings.Day -ne 0) {
                                      $trigger.MonthlySettings.Day
                                  } else {
                                      "每月最后一天"
                                  }
                # 特殊规则:每月第N个星期X的情况(比如每月第2个周五)
                RunWeeklyPattern = if ($trigger.MonthlySettings.WeeksOfMonth -ne 0) {
                                        "第$($trigger.MonthlySettings.WeeksOfMonth)个$(([DayOfWeek]$trigger.MonthlySettings.DaysOfWeek))"
                                    } else {
                                        $null
                                    }
            }
        }
    }
}

属性说明

  • MonthsOfYear:返回整数数组,对应选中的月份(1代表1月,2代表2月…12代表12月),选中所有月份时会包含1-12的全部值。
  • Day:任务设置为固定日期运行时返回具体日期(如15代表每月15日);设置为每月最后一天时,该值为0。
  • WeeksOfMonth + DaysOfWeek:任务设置为每月第N个星期X(如每月第3个周一)时,WeeksOfMonth返回1-5的数字(1=第一个,5=第五个),DaysOfWeek返回星期枚举值(0=周日,1=周一…6=周六),可通过[DayOfWeek]转换为可读名称。

补充:整合已有信息

如果要将每月触发器信息和你已获取的任务名称、执行文件等数据合并,可使用以下代码:

Get-ScheduledTask | Where-Object { $_.Triggers -ne $null } | ForEach-Object {
    $task = $_
    foreach ($trigger in $task.Triggers) {
        $output = [PSCustomObject]@{
            TaskName        = $task.TaskName
            TaskPath        = $task.TaskPath
            ExecuteFile     = $task.Action.Execute
            Arguments       = $task.Action.Arguments
            TriggerType     = $trigger.Type
            SelectedMonths  = $null
            RunDate         = $null
            RunWeeklyPattern = $null
        }

        if ($trigger.Type -eq 'Monthly') {
            $output.SelectedMonths = $trigger.MonthlySettings.MonthsOfYear
            $output.RunDate = if ($trigger.MonthlySettings.Day -ne 0) {
                                  $trigger.MonthlySettings.Day
                              } else {
                                  "每月最后一天"
                              }
            $output.RunWeeklyPattern = if ($trigger.MonthlySettings.WeeksOfMonth -ne 0) {
                                          "第$($trigger.MonthlySettings.WeeksOfMonth)个$(([DayOfWeek]$trigger.MonthlySettings.DaysOfWeek))"
                                      } else {
                                          $null
                                      }
        }

        # 仅输出每月任务的结果
        if ($output.TriggerType -eq 'Monthly') { $output }
    }
}

内容的提问来源于stack exchange,提问作者user3398681

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 12:22:40