我有一个PowerShell脚本,创build一个计划的任务使用调用RegisterTask通过Schedule.Service COM对象。
主要有:
$ts = new-object -com Schedule.Service $ts.Connect() $rootfolder = $ts.GetFolder("\") $taskXml = Get-Content "Task.xml" $rootfolder.RegisterTask("\Maintenance", $taskXml, 6, "LOCAL SERVICE", $null, 5)
这工作正常我的本地机器(Windows 7中,我是本地pipe理员)
当我在机器上试用它时,它将会运行,RegisterTask调用失败,并且ACCESS_DENIED。
但是,如果我以pipe理员身份运行命令提示符,那么powershell.exe -file myscript.sps1它工作正常,并添加任务。
我已经确保它所运行的用户有权写入%windir%和%windir%/ system32中的“任务”文件夹
该用户在pipe理员组,这是令人费解的,我还需要做什么,以授予用户创build计划任务的权限? 看来只是将它们添加到本地pipe理员组是不够的。
编辑:我已login到服务器作为将运行该脚本的用户。 我可以成功地将xml文件手动导入到Task Scheduler UI插件中。
我最终放弃了,找不到使用注册任务执行此操作的方法,但是使用schtasks允许我导入任务的xml文件,而不会出现拒绝访问错误。 我也可以使用schtasks将任务导入远程机器。