设置一个计划任务运行时未登录用户(Set a Scheduled Task to run when

2019-07-17 11:04发布

我一直在使用PowerShell的计划任务的cmdlet来创建我们的服务器上计划任务。

如何选到“运行用户是否登录或没有”使用该API?

我创建actiontriggerprincipalsettings对象,并通过他们Register-ScheduledTask ,如下图所示:

$action = New-ScheduledTaskAction -Execute foo.exe -Argument "bar baz"
$trigger = New-ScheduledTaskTrigger -Once -At $startTime -RepetitionInterval (New-TimeSpan -Minutes 1) -RepetitionDuration ([Timespan]::MaxValue)
$principal = New-ScheduledTaskPrincipal -UserId "$($env:USERDOMAIN)\$($env:USERNAME)" -LogonType ServiceAccount
$settings = New-ScheduledTaskSettingsSet -MultipleInstances Parallel

Register-ScheduledTask -TaskName $taskName -TaskPath "\my\path" -Action $action -Trigger $trigger -Settings $settings -Principal $principal

当我创建这样一个计划任务,它默认为“当用户登录时只运行”。

这个问题说明了如何做到这一点使用COM对象, 这其中使用SchTasks.exe会,但使用它我该怎么办*-ScheduledTask* cmdlet的?

Answer 1:

您需要删除$本金并注册一个用户名和密码的任务:

Register-ScheduledTask -TaskName $taskname `
                       -TaskPath "\my\path" `
                       -Action $action `
                       -Trigger $trigger `
                       -User "$env:USERDOMAIN\$env:USERNAME" `
                       -Password 'P@ssw0rd' `
                       -Settings $settings


Answer 2:

我不喜欢或目前收视率最高的答案批准的,那么你必须知道你的凭据为一个脚本来做到这一点,不能像帕克或者其他一些系统/配置自动化做到这一点。 还有就是要做到这一点,其Aeyoun提及,但并未深究哪个是正确设置主要为系统用户运行一个更好的/有道。

$action = New-ScheduledTaskAction -Execute foo.exe -Argument "bar baz"
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 1) -RepetitionDuration ([Timespan]::MaxValue)
$principal = New-ScheduledTaskPrincipal -UserID "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
$settings = New-ScheduledTaskSettingsSet -MultipleInstances Parallel

Register-ScheduledTask -TaskName "tasknamehere" -TaskPath "\my\path" -Action $action -Trigger $trigger -Settings $settings -Principal $principal


Answer 3:

“运行是否用户登录或不是”任务计划程序GUI选项等同于New-ScheduledTaskPrincipal -LogonType S4U



Answer 4:

还可以控制运行级检查:

运行级别

指定所需的权限级别运行与该主体相关联的任务。

如:“最高”或“有限”



文章来源: Set a Scheduled Task to run when user isn't logged in