找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 1005|回复: 0

[问题求助] Powershell 创建计划任务的问题 已解决

[复制链接]
发表于 2025-12-10 23:01:40 | 显示全部楼层 |阅读模式
本帖最后由 qq8899399 于 2025-12-11 23:07 编辑

需求
1 当前用户登录后延迟3秒运行
2 同一个触发器,任务每5分钟重复运行,无限制
如图


但怎么折腾都不行 我只能折中,两个触发器
触发器1  当前用户登录后延迟3秒运行
触发器2  首次运行后 每5分钟重复运行




我的脚本如下
  1. @ECHO Off
  2. PUSHD %~dp0
  3. TITLE Hello World
  4. >nul reg add hkcu\software\classes\.Admin\shell\runas\command /f /ve /d "cmd /x /d /r set "f0=%%2" &call "%%2" %%3" & set "_= %*"
  5. >nul fltmc || if "%f0%" neq "%~f0" ( cd.>"%tmp%\runas.Admin" & start "%~n0" /high "%tmp%\runas.Admin" "%~f0" "%_:"=""%" &exit /b )




  6. powershell -ExecutionPolicy Bypass -NoProfile -Command ^
  7.     "$TaskPath = '\';" ^
  8.     "$TaskName = '计划任务名字';" ^
  9.     "$exePath = "%CD%\程序名字.exe";" ^
  10.     "$action = New-ScheduledTaskAction -Execute $exePath;" ^
  11.     "$trigger = @();" ^
  12.     "$trigger += New-ScheduledTaskTrigger -AtLogOn -User "%USERNAME%";$trigger[0].Delay = 'PT3S';" ^
  13.     "$trigger += New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 2);" ^
  14.     "$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -ExecutionTimeLimit 0;" ^
  15.     "Register-ScheduledTask -TaskPath $TaskPath -TaskName $TaskName -Action $action -Trigger $trigger -Settings $settings -RunLevel Highest -Force;"
复制代码
已解决
通过COM接口 来设置https://learn.microsoft.com/en-u ... askschd/taskservice
  1. $service = New-Object -ComObject Schedule.Service;"
  2. $service.Connect();"
  3. $comFolder = $service.GetFolder($TaskPath);"
  4. $comTask = $comFolder.GetTask($TaskName);"
  5. $comTaskDef = $comTask.Definition;"
  6. $comTaskDef.Triggers[1].Repetition.Interval = 'PT5M';"# 设置重复间隔为5分钟
  7. $comTaskDef.Triggers[1].Delay = 'PT3S';"# 设置延迟启动为3秒
  8. $comFolder.RegisterTaskDefinition($TaskName, $comTaskDef, 6, $null, $null, $null);"# 重新注册任务以应用修改
复制代码
taskschd.h定义
  1. enum _TASK_TRIGGER_TYPE2
  2.     {
  3.         TASK_TRIGGER_EVENT        = 0,
  4.         TASK_TRIGGER_TIME        = 1,
  5.         TASK_TRIGGER_DAILY        = 2,
  6.         TASK_TRIGGER_WEEKLY        = 3,
  7.         TASK_TRIGGER_MONTHLY        = 4,
  8.         TASK_TRIGGER_MONTHLYDOW        = 5,
  9.         TASK_TRIGGER_IDLE        = 6,
  10.         TASK_TRIGGER_REGISTRATION        = 7,
  11.         TASK_TRIGGER_BOOT        = 8,
  12.         TASK_TRIGGER_LOGON        = 9,
  13.         TASK_TRIGGER_SESSION_STATE_CHANGE        = 11,
  14.         TASK_TRIGGER_CUSTOM_TRIGGER_01        = 12
  15.     }         TASK_TRIGGER_TYPE2;
  16. ;
复制代码
官方相关文档https://learn.microsoft.com/zh-cn/windows/win32/taskschd/taskschedulerschema-eventtrigger-triggergroup-element
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 21:22 , Processed in 0.017950 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表