Server 2008 R2 Agendador de Tarefas permissionf para um script vbs

1

Eu tenho um script vbs para fazer backups de arquivos de banco de dados MySQL usando o comando MySQLDump. Isso está funcionando perfeitamente e cria uma nova pasta para os backups de cada dia (por exemplo, 20130110).

No entanto, o script também deve ser limpo excluindo a pasta com mais de x dias.

Quando executo o script manualmente, ele funciona perfeitamente, mas quando configuro o script no Agendador de Tarefas e o defino como "Executar se o usuário está conectado ou não" (usando a conta de usuário Administrador), a tarefa falha . Eu acredito que o problema é permissões, mas como as pastas são criadas pela tarefa, elas devem poder ser excluídas pela tarefa.

BTW, o script vbs usa o comando FileSystemObject DeleteFolder para fazer a exclusão ...

Qualquer conselho seria apreciado!

EDIT Definitivamente é o comando FileSystemObject DeleteFolder que é o problema. Eu tentei definir a pasta para ter todos, permissões completas, mas ainda não há alegria ...

    
por JezB 18.01.2013 / 09:32

2 respostas

1

A resposta é a seguinte:

Ao configurar a Ação, em vez de definir o 'Programa / script' para incluir o caminho (por exemplo, "C: \ Scripts \ Backup.vbs"), você precisa definir o 'Programa / script' como "Backup. vbs "e o 'Start in' como" C: \ Scripts \ "

O script agora funciona!

Graças ao link pela sugestão ...

    
por 22.01.2013 / 14:24
0

Qual é a linha de comando da sua tarefa? Qual é o resultado da última execução produzido pela tarefa? Algum erro ou aviso aparece na aba "Histórico"? Você tem o UAC habilitado, mas esqueceu de marcar a opção "Executar com privilégios mais altos"?

Tente adicionar um código de depuração ao seu script para isolar o erro. Pessoalmente, prefiro fazer o log no log de eventos para evitar problemas de permissão do sistema de arquivos.

Set sh = CreateObject("WScript.Shell")
sh.LogEvent 4, "marker 1"

' your code here

sh.LogEvent 4, "marker 2"

' more of your code here

sh.LogEvent 4, "marker 3"

' ...

Isso deve lhe dar uma ideia geral de qual seção do seu código é problemática. Depois de localizar isso, você pode adicionar um código de depuração mais específico, por exemplo:

' some code

On Error Resume Next
' first instruction here
If Err Then ReportError "Error in 1st instruction"
' second instruction here
If Err Then Report Error "Error in 2nd instruction"
' ...
On Error Goto 0

' more code

Sub ReportError(txt)
  CreateObject("WScript.Shell").LogEvent 1, txt & ": " & Err.Description _
    & " (0x" & Hex(Err.Number) & ")"
  WScript.Quit 1
End Sub
    
por 18.01.2013 / 12:55