Windows 使用命令行创建在特定用户登录上运行的计划任务
我需要创建一个在特定用户登录时运行一次的计划任务。其目的是仅为特定用户启动任务 我知道我可以使用任务调度器在登录时创建一个带有触发器的任务,并在“设置”下指定特定用户 但是,由于我需要在安装例程中创建此文件,因此必须使用命令行(例如使用schtasks命令)自动创建此文件。可以使用以下示例创建在登录时执行的任务:Windows 使用命令行创建在特定用户登录上运行的计划任务,windows,batch-file,cmd,Windows,Batch File,Cmd,我需要创建一个在特定用户登录时运行一次的计划任务。其目的是仅为特定用户启动任务 我知道我可以使用任务调度器在登录时创建一个带有触发器的任务,并在“设置”下指定特定用户 但是,由于我需要在安装例程中创建此文件,因此必须使用命令行(例如使用schtasks命令)自动创建此文件。可以使用以下示例创建在登录时执行的任务: schtasks /Create /TR executable.exe /RU user /TN name /SC ONLOGON 但是我没有找到任何修改器来指定ONLOGON触发器
schtasks /Create /TR executable.exe /RU user /TN name /SC ONLOGON
但是我没有找到任何修改器来指定ONLOGON触发器的特定用户
资源:
谢谢。我不知道有这样的选择。不幸的是,
schtasks
命令没有涵盖Task Scheduler 2.0提供的所有功能。您可以使用VBScript实现这一点,但是,(ab)使用任务调度器来完成一些任务非常麻烦,而通过启动快捷方式、用户键中的注册表项或登录脚本可以轻松实现这些任务。我不知道有这样的选项。不幸的是,schtasks
命令没有涵盖Task Scheduler 2.0提供的所有功能。您可以使用VBScript来实现这一点,但是,(ab)使用任务调度器来完成一些事情会很麻烦,这些事情可以通过启动快捷方式、用户键中的注册表项或登录脚本轻松实现。最好的方法是通过schtasks命令行简单地导入XML。以下是一个示例,每当bob登录时,它都以bob的身份运行“calc.exe”:
<?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>
-
-
2014-10-22T01:50:13
使用者
-
-
2014-10-22T01:50:00
真的
WIN7BOX\bob
-
-
上下快速移动
互动电视
租赁权
-
无知的新
真的
真的
真的
假的
假的
-
真的
假的
真的
真的
假的
假的
假的
P3D
7.
-
-
calc.exe
最好的方法是通过schtasks命令行简单地导入XML。以下是一个示例,每当bob登录时,它都以bob的身份运行“calc.exe”:
<?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>
-
-
2014-10-22T01:50:13
使用者
-
-
2014-10-22T01:50:00
真的
WIN7BOX\bob
-
-
上下快速移动
互动电视
租赁权
-
无知的新
真的
真的
真的
假的
假的
-
真的
假的
真的
真的
假的
假的
假的
P3D
7.
-
-
calc.exe
将选项“/IT”添加到schtasks/create命令中,例如:
schtasks /Create /TR executable.exe /RU user /TN name /SC ONLOGON /IT
如“指示任务仅在(特定用户)登录时运行的/it参数”中所述
您应该忽略提到“任何用户登录时”的任务调度程序GUI,并实际尝试重新启动设备。您会发现,只有使用(特定用户)的帐户登录时,特定命令才会运行。将选项“/IT”添加到schtasks/create命令中,例如:
schtasks /Create /TR executable.exe /RU user /TN name /SC ONLOGON /IT
如“指示任务仅在(特定用户)登录时运行的/it参数”中所述
您应该忽略提到“任何用户登录时”的任务调度程序GUI,并实际尝试重新启动设备。您会发现,只有当您使用(特定用户)的帐户登录时,特定命令才会运行。这是有效的
SchTasks /Create /SC DAILY /TN “abcMyTask” /TR “C:RunMe.bat” /ST 09:00 /IT /S /U testuser /P password@123
创建一个新用户(这里我从本地Windows系统创建了testuser
)。
在本地计算机上,它不工作。尝试使用用户名testuser
和密码从另一个Windows系统运行该命令。它可以远程创建一个计划任务。这很有效
SchTasks /Create /SC DAILY /TN “abcMyTask” /TR “C:RunMe.bat” /ST 09:00 /IT /S /U testuser /P password@123
创建一个新用户(这里我从本地Windows系统创建了testuser
)。
在本地计算机上,它不工作。尝试使用用户名
testuser
和密码从另一个Windows系统运行该命令。它远程创建一个计划任务。那么您说运行部分的条目比使用任务计划程序更可取?我应该只在定期运行任务时使用调度程序?谢谢你给我指出了正确的方向。我将使用注册表项。@SvenPlath当然这只是我个人的意见,但是是的,我会选择Run
项而不是计划的登录任务。所以你说运行部分的项比使用任务计划程序更可取?我应该只在定期运行任务时使用调度程序?谢谢你给我指出了正确的方向。我会选择一个注册表项。@SvenPlath当然这只是我个人的意见,但是是的,我会选择一个Run
项而不是计划的登录任务。