Meu script do PowerShell não é salvo no arquivo quando executado usando o Agendador de Tarefas; preciso especificar um argumento específico?

3

Eu tenho um script que baixa um arquivo Excel temporário, copia partes dele para um novo arquivo e o salva em um local específico na rede.

O problema é que o novo arquivo nunca é criado / salvo. Se eu executar o script localmente (por meio do cmd.exe, do PowerShell ou do ISE do PowerShell ), SALVAR o arquivo localmente ou na rede. Se eu tentar executar o script por meio de um agendamento ou sob demanda por meio do Agendador de Tarefas, o arquivo temporário será criado, mas o documento final nunca será criado ou salvo. Existe um argumento específico que eu preciso passar, ou qualquer coisa que eu possa estar fazendo errado? Este é o comando que estou usando atualmente:

    powershell.exe -file C:\path\to\my\powershell\script\thescript.ps1

Como ele chama variáveis de ambiente e outras variáveis relativas à posição dos scripts, eu também configuro "Start in" para

    C:\path\to\my\powershell\script\

Eu tentei usar

    \MYSERVER\Path\To\Directory\file.xlsx

como o local do arquivo na rede ( como sugerido aqui ), mas isso também não funciona.

    
por EGr 27.09.2012 / 22:27

2 respostas

2

Os scripts funcionam quando você o executa porque VOCÊ tem direitos sobre o local de destino. Por padrão, uma tarefa agendada é executada como o usuário do sistema local.

Você deve criar um novo usuário dedicado em seu domínio para essa finalidade, fornecer exatamente os direitos necessários para concluir essa tarefa (e não mais) e configurar sua tarefa agendada para ser executada como esse usuário.

    
por 27.09.2012 / 22:30
1

Como você tem seus parâmetros especificados no script powershell (você pode postar um trecho dele com as partes em questão)? Você geralmente precisa de double quotes em torno dos parâmetros ao chamá-lo de Task Scheduler .

O script funciona se você chamá-lo do Powershell command prompt ?

Este pergunta pode ajudar um pouco. Não é exatamente a mesma coisa, mas aposto que é uma solução semelhante.

Aqui é outro site do TechNet artigo que pode ajudar com este problema. Resumo breve:

Found the answer to this - enclosing my entire arguments in double quotes and then my parameters in single quotes ensured that the correct values were being passed to my parameters.
    
por 27.09.2012 / 22:30