Não é possível criar um objeto COM em um script do PowerShell executado como uma tarefa agendada

1

Eu tenho um script do PowerShell que estou tentando executar como uma tarefa agendada. Sua finalidade é executar uma exportação noturna de um banco de dados do Access e, em seguida, carregar os arquivos simples exportados para um destino de SFTP. O script funciona bem quando eu o executo manualmente, mas quando tento executá-lo como uma tarefa agendada, ele falha. Eu reduzi o problema a uma falha na criação de um objeto COM.

O que estou vendo

Eu fiz alguns log sobre isso, e acho que sei o que está acontecendo; Eu só não sei como consertar isso.

A linha ofensiva no script do meu powershell é $Access = New-Object -ComObject Access.Application . Quando executo o script manualmente, meu objeto Access COM é criado com êxito. $Access é do tipo Microsoft.Office.Interop.Access.ApplicationClass , como eu esperava.

Se eu o executar como uma tarefa agendada, executando sob minhas próprias permissões, o objeto COM não será criado; $Access é retornado como $null , o que faz com que quaisquer chamadas de método contra esse objeto falhem.

Eu posso obter o objeto COM criado com êxito, marcando "Executar com privilégios mais altos" no Agendador de Tarefas, mas isso cria outro problema. Meu banco de dados Access usa tabelas vinculadas em um compartilhamento de rede e, ao ser executado como administrador local, perco o acesso a essas tabelas porque não sou mais um usuário de domínio.

Minha pergunta

Alguém sabe por que não consigo criar um objeto COM ao executar isso como uma tarefa agendada com minhas próprias credenciais? Existe alguma correção para isso?

Em caso negativo, alguma sugestão para corrigir meu problema de permissão? Parece que estou em um Catch-22 aqui; a única maneira de criar com êxito meu objeto COM é usar credenciais que fazem com que o restante do meu script falhe.

    
por Jeff Rosenberg 18.03.2014 / 14:49

0 respostas