使用命令行创建在特定用户登录时运行的计划任务

时间:2013-03-06 12:59:11

标签: windows batch-file cmd

我需要创建一个在特定用户登录时运行一次的计划任务。目的是仅为特定用户启动任务。

我知道我可以使用任务计划程序创建一个带有触发器登录时的任务,在“设置”下,我指定了特定的用户。

但是,因为我需要在安装例程期间创建它,所以必须使用命令行自动创建它,例如使用 schtasks 命令。可以使用以下示例创建在登录时执行的任务:

schtasks /Create /TR executable.exe /RU user /TN name /SC ONLOGON

但我没有找到任何修饰符来为 ONLOGON 触发器指定特定用户。

资源:

您知道是否有任何未记录的开关?或者提供必要功能的任何其他命令行工具?

感谢。

4 个答案:

答案 0 :(得分:2)

我不知道有任何这样的选择。遗憾的是,schtasks命令未涵盖Task Scheduler 2.0提供的所有功能。您可以使用Task Scheduler Scripting Objects使用VBScript完成此操作,但是,它认为(ab)使用任务计划程序可以通过启动快捷方式(用户的{{{中的注册表项)更轻松地实现这一点非常麻烦3}}密钥或登录脚本。

答案 1 :(得分:2)

最好的方法是通过schtasks命令行简单地导入XML。这是一个运行“calc.exe”作为bob的示例,只要bob登录:

  <?xml version="1.0" encoding="UTF-16" ?> 
- <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
- <RegistrationInfo>
  <Date>2014-10-22T01:50:13</Date> 
  <Author>user</Author> 
  </RegistrationInfo>
- <Triggers>
- <LogonTrigger>
  <StartBoundary>2014-10-22T01:50:00</StartBoundary> 
  <Enabled>true</Enabled> 
  <UserId>WIN7BOX\bob</UserId> 
  </LogonTrigger>
  </Triggers>
- <Principals>
- <Principal id="Author">
  <UserId>bob</UserId> 
  <LogonType>InteractiveToken</LogonType> 
  <RunLevel>LeastPrivilege</RunLevel> 
  </Principal>
  </Principals>
- <Settings>
  <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> 
  <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries> 
  <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries> 
  <AllowHardTerminate>true</AllowHardTerminate> 
  <StartWhenAvailable>false</StartWhenAvailable> 
  <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable> 
- <IdleSettings>
  <StopOnIdleEnd>true</StopOnIdleEnd> 
  <RestartOnIdle>false</RestartOnIdle> 
  </IdleSettings>
  <AllowStartOnDemand>true</AllowStartOnDemand> 
  <Enabled>true</Enabled> 
  <Hidden>false</Hidden> 
  <RunOnlyIfIdle>false</RunOnlyIfIdle> 
  <WakeToRun>false</WakeToRun> 
  <ExecutionTimeLimit>P3D</ExecutionTimeLimit> 
  <Priority>7</Priority> 
  </Settings>
- <Actions Context="Author">
- <Exec>
  <Command>calc.exe</Command> 
  </Exec>
  </Actions>
  </Task>

答案 2 :(得分:1)

将选项“/ IT”添加到schtasks / create命令,例如:

schtasks /Create /TR executable.exe /RU user /TN name /SC ONLOGON /IT

正如在https://technet.microsoft.com/en-us/library/cc725744(v=ws.11).aspx中提到的那样/ it参数,表示任务仅在(特定用户)登录时运行“

您应该忽略任务计划程序GUI,其中提到了“在任何用户登录时”,并且实际上尝试重新启动您的设备。您会发现只有在使用(特定用户)的帐户登录时才会运行特定命令。

答案 3 :(得分:0)

这很有效。

SchTasks /Create /SC DAILY /TN “abcMyTask” /TR “C:RunMe.bat” /ST 09:00 /IT /S /U testuser /P password@123

创建一个新用户(这里我从本地Windows系统创建了testuser)。 在您的本地计算机上它不起作用。尝试使用用户名testuser和密码从另一个Windows系统运行该命令。它远程创建一个计划任务。

相关问题