Script para desconectar o local da rede mapeada

1

Eu tenho um usuário que precisa mapear um determinado local de rede para gerar O: . De vez em quando, esse disco perde seu mapa para O: , mas será exibido sob diferentes letras, como H: , K: e L: . O procedimento normal é que ele chame Helpdesk (eu) para descer e desmapear / remapear a unidade para a letra adequada.

Durante o processo de remapeamento, certifico-me de marcar a caixa Remap on login , mas essa configuração parece não ter efeito.

Existe alguma maneira de fazer o script dessa tarefa? Normalmente, eu usaria net use /delete \server\share ou net use x: /delete (onde x: é a letra da unidade), mas a primeira não funciona porque há uma letra atribuída ao caminho e a segunda não funciona como a letra o remapeamento não é sempre o mesmo.

O sistema é o Windows NT (usamos softwares especializados que não atualizam há algum tempo).

    
por Kruug 14.05.2013 / 16:08

2 respostas

2

Contanto que não haja outros compartilhamentos que você esteja tentando salvar, use o seguinte em um script em lote ou de logon:

 NET USE * /delete
 NET USE O: \server\share

Isso removerá todos os compartilhamentos atribuídos ( * ) e os configurará para o drive / caminho desejado.

    
por 15.05.2013 / 04:19
1

Para identificar a letra da unidade para a qual o compartilhamento está mapeado e desmapá-lo no momento:

@echo off
for /f "tokens=2" %%D in ('net use ^| find ":" ^| find "\server\share") do net use %%D /delete

Comentários:

  • ^ é como \ no Unix –– transforma o caractere seguinte de especial para não-especial ou vice-versa. Usamos ^| para que a interpretação dos caracteres | seja adiada até que o comando dentro dos parênteses seja analisado.
  • %%D é uma variável de índice de loop FOR . Você pode usar qualquer letra que desejar, mas, ao contrário das variáveis normais do Prompt de Comando do Windows,
    • pode ser apenas uma única letra, por isso, não tente usar %%DRV e
    • faz distinção entre maiúsculas e minúsculas.
  • Eu incluí o find ":" porque, quando eu estava testando isso, recebi uma saída net use parecida com
OK           H:           \WONDERLAND\HUMPTYDUMPTY
OK           Q:           \WONDERLAND\QUEENOFHEARTS
OK                        \WONDERLAND\CHESHIRECAT

Então, você precisa fazer algo para filtrar as linhas que não incluem uma letra de unidade.

  • Como você deve saber (porque eu sugeri, acima), FOR é uma construção de loop. Sua declaração (s) é executada uma vez para cada linha que sai do net use ... | find pipeline, com %%D definido para a segunda cadeia (token) na linha. Se você quiser fazer mais de um comando e / ou ser mais seletivo, faça isso:
for /f "tokens=2" %%D in ('net use ^| find ":" ^| find "\server\share") do (
    ...
    if %%D==Z: (
        ...
    ) else (
        ...
    )
    ...
)

Quer mais? Altere "tokens=2" para "tokens=2,3" e %%E será definido para o terceiro token; isto é, o UNC ao qual a letra da unidade está mapeada.

    
por 18.05.2013 / 02:13