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 ...


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.