Existe uma maneira de “desconectar” uma unidade de rede mapeada, mas NÃO remove o mapeamento?

12

Por exemplo, quando digito net use , posso ver algo como:

Status        Local       Remote
OK            H:          \server\home folders\me
Unavailable   I:          \serverA\share1
Disconnected  J:          \serverB\share2
Reconnecting  K:          \serverC\share3

Quando isso acontece, o Windows Explorer tem atrasos de 10 a 20 segundos ao fazer algo tão simples quanto criar uma nova pasta na minha unidade C :. Depois de um tempo, o drive K: mudará para dizer "Desconectado".

O que eu quero fazer é, de alguma forma, forçar a unidade K: a ser desconectada ou indisponível, mas sem perder o mapeamento autenticado.

    
por Glen Little 29.10.2013 / 19:42

3 respostas

1

A Microsoft parece estar tentando mover tarefas administrativas como essa para o PowerShell.

No seu caso específico, o cmdlet a ser usado é o Remove-PSDrive. Remove-PSDrive fará exatamente o que você está pedindo: desconecte uma unidade de rede mapeada. A sintaxe do seu cenário seria:

Remove-PSDrive -Name K

Para chegar a uma linha de comando do powershell na qual você pode executar esse cmdlet, abra o menu Iniciar e, na caixa de pesquisa, basta digitar powershell. Se você não tiver a caixa de pesquisa, no menu Iniciar, selecione Executar e, na caixa Executar, digite powershell e pressione Enter.

Para obter detalhes completos sobre como usar este cmdlet, incluindo todas as suas opções, consulte o artigo da technet da Microsoft: link

    
por 11.11.2013 / 09:50
1

Ok. Eu posso ter uma solução. Tentei pesquisar o parâmetro /savecred de net use , mas não consegui que funcionasse corretamente, então aqui está outra abordagem:

Seu problema foi o atraso com o Explorer após a desconexão com a VPN.
Então, por que não ocultar as unidades do Explorer após a desconexão para que ele não tente acessá-las.

Existe uma chave de registro para ocultar as unidades do Explorer:

HKEY_xxx\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDrives

e HKEY_xxx podem ser ambos HKEY_LOCAL_MACHINE e HKEY_CURRENT_USER .

Abaixo desta postagem, há um resumo do valor que NoDrives deve ter.
(adicione os números para as unidades).

Eu criei um pequeno batchfile onde você não precisa fazer os cálculos sozinho.
É um arquivo batch 'toggle'.

Execute uma vez para se conectar à sua "Minha VPN".
Execute-o novamente para desconectar e ocultar as unidades I, J e K .

Você pode dividir isso facilmente em dois batchfiles, mas você entende ... Você também pode simplificar esse lote se definir o número de NoDrives em vez de permitir que o lote faça o cálculo.

Isso precisa ser executado como administrador. (é possível elevar automaticamente, mas isso é muito avançado)

Se você concede a si mesmo permissão na chave NoDrives você não precisa executar isso como administrador. Basta abrir regedit.exe , navegar para essa chave e clicar em "Editar > Permissões" e conceder a você mesmo "Controle total" sobre essa chave.

@echo off
:: ------------------------
set MyVPN="My VPN"
:: ------------------------
rasdial | findstr %MyVPN% 1>nul
If %ERRORLEVEL% == 0 goto disconnect

:connect
echo ============================================================
echo connecting to %MyVPN%
echo ============================================================
rasdial %MyVPN%
:: This is easy. We just set 0 in NoDrives
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoDrives /T REG_DWORD /d 0 /f

goto :end

:disconnect
echo ============================================================
echo disconnecting from %MyVPN%
echo ============================================================
rasdial %MyVPN% /disconnect

:: ------------------------------------------------------------------
:: This is harder. We need to determine what value NoDrives should be
:: ------------------------------------------------------------------
Setlocal EnableDelayedExpansion

:: ------------------------
:: Set here your VPN drives
:: ------------------------
set drives='I J K'

:: ------------------------
:: Calculation to determine the value
:: ------------------------
set drive_value=1
set NoDrives=0
for %%c in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  echo.%drives% | findstr "%%c" 1>nul
  if !ERRORLEVEL! == 0 set /a NoDrives+=drive_value
  set /a drive_value="drive_value<<1"
)
echo Seting NoDrives to %NoDrives%
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoDrives /T REG_DWORD /d %NoDrives% /f
endlocal

:end
pause

Nota:
O Windows Explorer precisa ser fechado e aberto novamente antes que as unidades fiquem ocultas (ou visíveis novamente).

Configurações para NoDrives :

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDrives
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDrives

     Decimal       Hex
A:         1         1
B:         2         2
C:         4         4
D:         8         8
E:        16        10
F:        32        20
G:        64        40
H:       128        80
I:       256       100
J:       512       200
K:      1024       400
L:      2048       800
M:      4096      1000
N:      8192      2000
O:     16384      4000
P:     32768      8000
Q:     65536     10000
R:    131072     20000
S:    262144     40000
T:    524288     80000
U:   1048576    100000
V:   2097152    200000
W:   4194304    400000
X:   8388608    800000
Y:  16777216   1000000 
Z:  33554432   2000000 
    
por 09.12.2013 / 19:12
0

Eu não sei como fazer isso, mas faria um script para adicionar a unidade mapeada para facilitar a vida.

  1. Crie um arquivo com a extensão .bat (Ex. map_drives.bat)
  2. Dentro do arquivo, adicione uma linha como esta net use J: \server\folder
  3. Clique duas vezes no arquivo e ele mapeará sua unidade
por 05.12.2013 / 01:51