Acesso negado ao criar uma tarefa agendada com o powershell e o objeto com schedule.service

1

Eu tenho um script powershell que cria uma tarefa agendada usando uma chamada para RegisterTask via o objeto Schedule.Service com.

Essencialmente:

$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)

Isso funciona bem na minha máquina local (windows 7, e eu sou um administrador local)

Quando eu tento isso na máquina, ele será executado, a chamada RegisterTask falhará com ACCESS_DENIED.

No entanto, se eu executar um prompt de comando como administrador, então powershell.exe -file myscript.sps1 funciona bem e adiciona a tarefa.

Eu assegurei que o usuário em que está sendo executado tenha permissões para gravar nas pastas Tarefas em% windir% e% windir% / system32

O usuário está no grupo Administradores, o que é intrigante, o que mais eu preciso fazer para dar ao usuário as permissões para criar tarefas agendadas? Parece que apenas adicioná-los ao grupo de administradores locais não é suficiente.

EDIT: Eu fiz o login no servidor como o usuário que estará executando o script. Posso importar com êxito o arquivo xml para o suplemento da interface do usuário do Agendador de Tarefas manualmente.

    
por Matt 26.02.2013 / 01:49

2 respostas

1

Desde o Powershell 4.0 você pode usar o módulo ScheduledTask para criar tarefas agendadas sem o uso do objeto-com e leitura e escrita mais fáceis.

Exemplo:

 $A = New-ScheduledTaskAction -Execute "Taskmgr.exe"
 $T = New-ScheduledTaskTrigger -AtLogon
 $P = New-ScheduledTaskPrincipal "Laptop\Administrator"
 $S = New-ScheduledTaskSettingsSet
 $D = New-ScheduledTask -Action $A -Principal $P -Trigger $T -Settings $S
 Register-ScheduledTask T1 -InputObject $D

O primeiro comando usa o cmdlet New-ScheduledTaskAction para atribuir a variável $A ao arquivo executável tskmgr.exe .

O segundo comando usa o cmdlet New-ScheduledTaskTrigger para atribuir a variável $T ao valor AtLogon.

O terceiro comando atribui a variável $P ao principal da tarefa agendada, Contoso\Administrator .

O quarto comando usa o cmdlet New-ScheduledTaskSettingsSet para atribuir a variável $S a um objeto de configurações de tarefa.

O quinto comando cria uma nova tarefa e atribui a variável $D à definição da tarefa.

O sexto comando (hipoteticamente) é executado mais tarde. Ele registra a nova tarefa agendada e a define usando a variável $D .

Não se esqueça de executar o código como Administrator . Fonte.

    
por 26.11.2017 / 13:34
0

Desisti no final, não consegui encontrar uma maneira de fazer isso usando as tarefas de registro, no entanto, usar schtasks me permitiu importar o arquivo xml da tarefa sem o erro de acesso negado. Eu também poderia usar schtasks para importar a tarefa para uma máquina remota.

    
por 06.03.2013 / 07:23