我正在使用 Windows 7,我想使用名为“SchTasks”的任务计划程序命令行模式实用程序根据我的选项创建计划任务。
但是使用 Schtasks 存在一些问题:
- 有没有办法添加“工作站解锁”触发器?
- 有没有办法添加两个或更多触发器?
我希望在命令行上拥有所有选项,就像使用 GUL 任务计划程序应用程序时一样。
答案1
选项1
事件 ID 4801对应于工作站已解锁。您可以打开此事件的日志记录,正如我在回答中解释的那样这里。
现在您可以使用调度任务如下创建该事件触发的任务:
schtasks /Create /RU "Username" /SC ONEVENT /MO "*[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and EventID=4801]]" /EC Security /TN "Taskname" /TR "Drive:\path to\program.exe" /F
在这里我使用了/欧共体参数来定义事件通道(在这种情况下安全日志)。莫或者修改器参数用于指定匹配我们感兴趣的事件所需的 XPath 过滤器。
但是你可能会说你可以使用工作站解锁触发器,而无需打开事件日志记录,当然您是正确的。任务可用的触发器如下:
我用绿色标记的那些可以使用 schtasks 指定/SC范围:
/SC schedule Specifies the schedule frequency.
Valid schedule types: MINUTE, HOURLY, DAILY, WEEKLY,
MONTHLY, ONCE, ONLOGON, ONSTART, ONIDLE, ONEVENT.
我用红色标记的那些似乎没有相应的 schtasks 选项。可能是一种使用此类触发器创建任务的模糊方法,但至今我还没有找到它,并且倾向于认为这是不可能的(缺乏关于 schtasks 参数的易于理解但详细的文档也没有帮助)。
那里是当然是一个解决方法,这将引导我们(请击鼓)...
选项 2
只需使用任务计划程序 UI 创建具有所需触发器(如果需要,可以创建多个)的任务并将其导出为 XML。现在,您当然可以根据需要导入 XML 并完美地重新创建任务:
schtasks /Create /TN "Taskname" /XML "ExportedTask.xml"
答案2
以下代码无需打开解锁事件的审核,即可按原样运行。
schtasks /Create /SC ONEVENT /MO "*[System[(EventID=4624)]] and *[EventData[Data[9]="7"]]" /EC Security /TN "PF9I" /TR "\"C:\Program Files\Five9PlantronicsInterface\MyApps.bat"\" /F
秘诀在于,Data[9] 对应于属性 LogonType,而值 7 对应于解锁事件。
答案3
对我来说,有效的方法是根据这篇文章 使用如下EventID 42
和参数:/EC System
将电源事件(睡眠和唤醒)记录到事件日志中
在 Microsoft 社区。
因此,以下方法schtasks
对我来说非常有效:
schtasks /create /sc onevent /mo "*[System[(EventID=42)]]" /EC System /tn task1 /tr "batchfile.bat"