Agendador de tarefas do Windows com usuário comum

0

Eu tenho um script do PowerShell no meu compartilhamento de rede (\ server \ dir \ my.ps1).

  • se eu executar isso no prompt de comando (arquivo de configuração "\ server \ dir \ my.ps1"), funcione conforme o esperado.

  • se eu criar uma tarefa básica no agendador com "Executar apenas quando o usuário fizer logon", funcionará conforme o esperado.

  • se marque a opção "Executar com o usuário conectado ou não", o script não será executado

  • na guia ação: Progam / Script -> PowerShell; Argumentos: -file "\ server \ dir \ my.ps1"

  • no histórico de tarefas, vejo a tarefa correr bem ... mas o script não faz nada ...
  • o usuário é um usuário regular

  • Se eu mudar o usuário para administrador, tudo funcionará conforme o esperado ....

É possível executar tarefas agendadas com usuário comum com "executar se o usuário está conectado ou não"?

#

Então eu fiz alguns testes:

No arquivo PS, eu coloquei este script:

Conexão de teste - SBS do computador | arquivo externo "c: \ script \ test.txt" $ olSession = (Novo-Objeto-Objeto do Outlook.Aplicativo) .Sessão $ olSession.Logon ('Outlook') $ contactsFolder = 10 $ elemek = $ olSession.GetDefaultFolder ($ ContactsFolder) .Items @ ($ elemek) | ForEach-Object {$ _. Delete ()}

  • A primeira linha é executada conforme o esperado (com o usuário conectado ou não)
  • O restante da linha não foi executado
  • Se eu colar essas linhas no cmd, tudo será executado conforme o esperado
  • Se eu alterar as configurações para "Executar apenas se o usuário estiver conectado", todas as linhas serão executadas conforme o esperado
  • Se eu der direitos de administrador ao usuário, tudo será executado como esperado no logoff também ...

Então, algo com minhas linhas de sessão do Outlook ... eu não entendo ...

holian
fonte
O usuário tem direitos "Fazer logon como trabalho em lotes"?
DarkMoon 24/02
Sim. Na política de domínio, concedi o direito ao usuário. (antes que eu fiz essas configurações, eu não posso salvar o task9
Holian
Tente especificar o caminho completo para o executável "c: \ windows \ system32 \ windowspowershel \ 1.0 \ powershell.exe", em vez de apenas "powershell". Você pode não obter um ambiente completo ao executar uma tarefa enquanto estiver desconectado; nesse caso, a variável PATH não poderá ajudar a encontrar o PowerShell.
DarkMoon 24/02
não ... eu editei o meu post com um pequeno teste ... por favor, se você pudesse dar uma olhada em .... thx #
2100 holian
Ah, sinto que, como não há área de trabalho para iniciar, a sessão não é criada. Tente algo como se ($ olSession) {<execute o script normalmente>} else {"Variável não inicializada" | Arquivo de saída "c: \ script \ VarNotInit.txt"}
DarkMoon 25/02