Mapeia um espaço de rede para uma unidade do Windows em um trabalho agendado (script)?

1

Eu preciso mapear para um espaço de rede uma unidade mapeada como S: para alguns outros trabalhos. Minha caixa é o Windows Server 2008. No Windows Server 2008, posso criar uma tarefa agendada com um trabalho de morcego e posso especificar que ela seja executada quando o Windows for reinicializado ou faça logon sem o usuário especificado. É como um serviço com sistema local. O morcego contém cmd net para mapear a unidade:

net use S: \netdrive1\space1 pwd /user:oneUser

Então eu reinicio a caixa. Parece que o trabalho agendado foi executado. Eu posso verificar no histórico do trabalho do Agendador de Tarefas. No entanto, a unidade S: não pode ser mapeada. Se eu apenas executar o morcego na linha de comando. Funciona bem. Parece que eu tenho que fazer logon na caixa para fazer a unidade mapeada. Não tem certeza se é possível deixar o Windows executar o trabalho como sistema local quando ele é reinicializado para disponibilizar a unidade?

No meu caso, a unidade de rede está em uma caixa Unix.

Como mencionei acima, tenho alguns outros trabalhos agendados de dependência no sistema local do Windows. Portanto, tenho que disponibilizar o espaço de rede sem nenhum logon de usuário.

    
por David.Chu.ca 01.09.2010 / 22:45

6 respostas

2

As unidades mapeadas só estão disponíveis para uma sessão interativa. Você não pode mapear uma unidade durante a execução como um serviço, você precisa usar caminhos UNC.

    
por 01.09.2010 / 22:57
2

Eu enfrentei um problema semelhante. Quando eu estava tentando agendar uma tarefa e procurar o script como ação, a unidade mapeada não estava sendo exibida. Eu remapeei a unidade na janela que abriu enquanto navega no arquivo no sistema de arquivos. Depois disso, funcionou bem para mim.

Passos que segui:

  1. Abra o Agendador de Tarefas

  2. Crie uma nova tarefa com todos os detalhes, gatilhos, etc. necessários.

  3. Ir para ações - > Selecione a ação na lista suspensa - > Clique em "Browse"

(Isso abriu a janela de navegação)

  1. Clique com o botão direito em Computador - > Mapear unidades de rede - > Mapeie a unidade necessária

  2. Anexe o arquivo ao trabalho

Concluído

Felicidades !!

    
por 19.09.2017 / 12:21
0

Você está preso em um dilema ... o agendador está executando seu arquivo bat em "modo de administrador", o que não afeta realmente o ambiente de modo de usuário. Eu sei que isso soa estranho, mas meus próprios testes mostram que pode ser também dois ambientes de usuário separados. Você pode querer tentar executar um & vbs script sujo na pasta de inicialização do perfil do usuário ... e veja se isso faz o que você quer.

set WshShell = WScript.CreateObject("WScript.Shell")
Set objNetwork = CreateObject("WScript.Network")
do while true
  objNetwork.MapNetworkDrive "S:", "\netdrive1\space1", false, "oneUser", "pwd"
  WScript.Sleep(12000)
loop

Se a unidade não for desmapeada ... isso gerará um erro no próximo loop quando tentar mapear a unidade ... a menos que você detecte o erro ... ou faça um & sujo

On Error Resume Next
antes do loop.

Você pode ajustar o tempo de espera conforme necessário ... ou fazer um mecanismo de verificação de data / hora mais avançado ... mas isso deve lhe dar a ideia.

    
por 01.09.2010 / 23:00
0

net use S: \netdrive1\space1 pwd /user:oneUser /persistent:yes

Isso pode acabar com a necessidade da tarefa agendada, mas não tenho certeza se ela manterá a conexão sem o logon do usuário.

Os caminhos UNC em sua aplicação são uma maneira muito melhor do que mapear a unidade, então, se possível, você deve fazer isso.

link

EDITAR

Isso não é muito elegante, mas pode funcionar (completamente não testado)

NET USE \netdrive1\space1 /USER:oneUser pwd && PUSHD \netdrive1\space1
COPY C:\path\to\files\*.dat Z:\
POPD && NET USE \netdrive1\space1 /DELETE

Tente isso como seu arquivo em lotes. O que está acontecendo é que o NET USE autentica o usuário contra o compartilhamento, o PUSHD monta automaticamente a unidade em uma letra de unidade (na ordem inversa, portanto, assumindo que nenhuma outra unidade esteja montada, o que não é neste caso, será Z :). Copie os arquivos e mate a conexão ao compartilhamento. Não tenho ideia se isso funcionará sem uma sessão de login interativa, mas vale a pena tentar.

    
por 01.09.2010 / 22:57
0

Já pensou em usar um caminho UNC em vez de tentar mapear uma letra de unidade? Em 98% dos casos, usando \\ server \ share \ onde quer que você encontre um s: não causa problemas.

    
por 03.09.2010 / 20:42
0

Consegui executar minha tarefa agendada como meu usuário desejado e use apenas NET USE Q: \192.168.7.1\space como a primeira linha do script em lote que foi executado.

Infelizmente, não tive a opção de usar os caminhos UNC diretamente, devido à maneira como as bibliotecas de terceiros tratavam os caminhos UNC.

    
por 06.01.2014 / 02:14