Powershell - 创建计划任务以作为本地系统/服务运行

时间:2010-01-04 16:46:36

标签: powershell scheduled-tasks

有人能告诉我如何使用作为本地系统或本地服务运行的powershell创建计划任务吗?

除了调用ITaskFolder.RegisterTaskDefinition()之外,一切都很好。

如果我传入$ null或“”,则调用炸弹说无效的用户名或密码。 任何想法“

$ Rootfolder.RegisterTaskDefinition(“Test”,$ Taskdef,6,“LOCAL SERVICE”,“”,3)

3 个答案:

答案 0 :(得分:6)

对于那些可以在 Windows 8或Windows Server 2012 上使用 PowerShell 3.0 的用户,可以使用新的cmdlet以简单的方式执行此操作cmdlet Register-ScheduledTask和参数-User "System"

以下是完全使用PS创建的计划任务,其目的是在系统启动3分钟后使用SYSTEM帐户重新启动服务My Service:

$taskname = "Restart My Service"
$taskdescription = "Restart My Service after startup"
$action = New-ScheduledTaskAction -Execute 'Powershell.exe' `
  -Argument '-NoProfile -WindowStyle Hidden -command "& Restart-Service -displayname \"My Service\""'
$trigger =  New-ScheduledTaskTrigger -AtStartup -RandomDelay (New-TimeSpan -minutes 3)
$settings = New-ScheduledTaskSettingsSet -ExecutionTimeLimit (New-TimeSpan -Minutes 2) -RestartCount 3 -RestartInterval (New-TimeSpan -Minutes 1)
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName $taskname -Description $taskdescription -Settings $settings -User "System"

注意:您需要以该脚本的管理员身份运行powershell。

答案 1 :(得分:5)

此代码段将使用PowerShellPack的任务计划程序模块安排任务立即以SYSTEM身份运行:

New-Task |
    ForEach-Object {
        $_.Principal.Id = "NTAuthority\SYSTEM"
        $_.Principal.RunLevel = 1
        $_
    } |
    Add-TaskAction -Script {
        "SystemTask" > C:\myTest.txt
    } |
    Add-TaskTrigger -OnRegistration |
    Register-ScheduledTask SystemTask

答案 2 :(得分:3)

我认为您需要使用“nt authority \ localservice”作为用户名。

善,