A tarefa agendada funciona em uma unidade mapeada quando configurada para o modo Windows XP, mas não para o Windows 7

1

Existe um PC com Windows 7 com uma tarefa agendada. A única coisa que faz é executar um arquivo VBS localizado em uma unidade mapeada que aponta para um compartilhamento de rede:

M:\Folder\Script.vbs

onde M: é a unidade mapeada.

A tarefa está definida como Run whether user is logged in or not e ela salvou as credenciais do usuário que tem acesso a essa pasta.

Agora, se eu selecionar isso no menu suspenso:

entãoatarefafunciona.Noentanto,seeuselecionarisso:

então ele falha com o código 8007010B (que, no meu entender, é "Nome do diretório inválido"). Ele falha se alguém está logado ou não, e independentemente do que acionou a tarefa (o agendamento ou o usuário que Run manualmente). Ele também falha se eu fizer login no computador como o usuário sob o qual a tarefa deve ser executada e Run manualmente.

Quando estou logado como o usuário sob o qual a tarefa é executada, tenho acesso à unidade mapeada e posso executar o script com o Explorer sem problemas.

Aparentemente, existe algum shim de compatibilidade, mas qual? E o que eu faço para que funcione quando 'configurado para o Windows 7', que deve ser o modo nativo para o computador?

Gostaria apenas de deixá-lo como está, mas se alguém "atualizar" a tarefa para o modo do Windows 7 por engano, não há como voltar: a opção do Windows XP é removida do menu para essa tarefa. Para recuperá-lo, é necessário exportar a tarefa como XML, excluí-la e reimportar.

    
por GSerg 27.03.2014 / 21:08

3 respostas

2

Quando a tarefa é executada, o mapa da unidade M: não existe no contexto do usuário / sessão em que a tarefa está sendo executada.

Faça referência ao local de rede pelo UNC ou modifique o script da tarefa para mapear M: para o caminho antes de executar o restante de seu trabalho.

    
por 27.03.2014 / 22:53
1

@ Ƭᴇcʜιᴇ007 está correto. Executar o script usando " Executar se o usuário está conectado ou não " usa uma sessão do sistema e não pode ver as unidades da sessão do usuário físico.

Outra solução é criar outra tarefa que usa a mesma conta de usuário e usa a mesma seleção " Executar se o usuário está conectado ou não ". Essa tarefa seria usada exclusivamente para mapear as unidades desejadas nas quais suas outras tarefas agendadas dependem. As unidades permanecerão mapeadas na sessão do sistema e permitirão que suas outras tarefas vejam as mesmas unidades mapeadas. Eu disparo esta tarefa que executa um arquivo de lote para mapear unidades para o usuário do sistema a cada 5 minutos.

Exemplo de mapeamento do Powershell

if (-not (test-path E:)) {Log -Letter "E:"; Net Use E: \server\share 'password' /user:user /persistent:yes /y}

Mapeamento de lote / Powershell simples

Net Use E: \server\share 'password' /user:user /persistent:yes /y

    
por 08.02.2017 / 20:46
0

De acordo com o este tópico, você precisa adicionar o mesmo caminho ao caixa "iniciar em". Adicione M:\Folder\ ao início na caixa e ele deve funcionar bem.

    
por 27.03.2014 / 21:14