我使用以下命令创建计划任务
SCHTASKS /Create /TN EventLog /SC ONEVENT /EC System /MO "*[System[Provider[@Name='WindowsUpdateClient'] and EventID=21]]" /TR "C:\Windows\System32\shutdown.exe -r -f -t 300"
创建后,如果我转到“任务”>“触发器”>“编辑触发器”,它会显示源的重复条目
现在,如果我手动删除此事件触发器,然后手动添加相同的触发器,那么我不会认为它是重复的
我在 SCHTASKS 中做错了什么,导致创建了这个重复的条目,如何避免它?
答案1
没什么错,它实际上是一个“功能”。;)
这是因为您可以引用任何您想要的“来源”,无论它是否存在于下拉列表中。
下拉列表中的条目由两个元素组成,即值和文本。“文本”是向您显示的文本名称,值是分配给该条目的数字。这样,您可以拥有多个具有相同文本的条目(但不能拥有多个具有相同值的条目)。
因此,您使用 SchTasks 创建新任务,并在 Modifier 选项中通过 XPath 代码提供源。然后加载 GUI。GUI 通过检查系统中是否存在已知事件源来构建下拉条目,然后为每个事件源分配一个值并将其名称用作显示的文本。然后,它会扫描任务本身以添加任何自定义事件源,这些事件源将被分配下一个可用值,并添加到列表中。然后按文本的字母顺序排列列表。
简短版本:使用 SchTasks 您始终可以定义自定义源(从 GUI 的角度来看),因此 GUI 会将其视为自定义源并向您显示,即使文本名称与已知事件源重复。
答案2
SeanClt 和 Techie007 也说得对。但似乎该值与您的构造的名称相同。因此该命令没有正确的值,并且您通过命令行安排的命令未启动。这是因为名称和 UI 中的值不一样。
看看我的问题,这个触发器正在工作
SCHTASKS /Create /TN test2 /RU system /TR "C:\Windows\notepad.exe" /SC ONEVENT /EC Security /MO "*[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and EventID=4647]]"
但这不是触发器
SCHTASKS /Create /TN test2 /RU system /TR "C:\Windows\notepad.exe" /SC ONEVENT /EC Security /MO "*[System[Provider[@Name='Microsoft Windows security auditing.'] and EventID=4647]]"
但“Microsoft Windows 安全审计。”在 UI 中。
您可以在任务概述中看到正确的触发字符串。