¿Hay alguna manera de "desconectar" una unidad de red asignada, pero NO eliminar la asignación?

12

Por ejemplo, cuando escribo net use, podría ver algo como:

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

Cuando esto sucede, el Explorador de Windows tiene retrasos de 10 a 20 segundos al hacer algo tan simple como crear una nueva carpeta en mi unidad C :. Después de un tiempo, la unidad K: cambiará para decir "Desconectado".

Lo que quiero hacer es forzar de alguna manera a la unidad K: a estar desconectada o no disponible, pero sin perder la asignación autenticada.

Glen Little
fuente
2
Solo por curiosidad, ¿por qué crees que necesitas esto?
Zoredache
2
Me conecto a una VPN, uso la unidad K: y luego desconecto la VPN. Después de eso, mi Explorer suele ser lento, hasta que finalmente marca K: como desconectado. Esta es una simplificación, ya que tengo más de 3 asignaciones de unidades necesarias para varios scripts, y puedo conectarme / desconectarme de la VPN varias veces al día.
Glen Little
1
@GlenLittle ¿Ha intentado desmarcar la opción "volver a conectar al iniciar sesión" cuando asigna el disco?
Moisés
44
¿Por qué no hacer un script para conectar y desconectar las unidades (incluida la eliminación de la asignación)? Como aquí , incluso podría crear una secuencia de comandos que se conecte a la VPN automáticamente y una secuencia de comandos para desconectar (incluidas todas las cosas de mapeo de unidades)
Rik
44
A net use \\serverB\share2 /deletedebería hacer el truco (desconecta el disco pero no afecta el mapeo)
Paolo Gibellini

Respuestas:

1

Microsoft parece estar tratando de mover tareas administrativas como esta a PowerShell.

En su caso específico, el cmdlet a usar es Remove-PSDrive. Remove-PSDrive hará exactamente lo que está pidiendo: desconectar una unidad de red asignada. La sintaxis para su escenario sería:

Remove-PSDrive -Name K

Para llegar a una línea de comandos de PowerShell donde puede ejecutar ese cmdlet, abra el menú Inicio y en el cuadro de búsqueda simplemente escriba Powershell. Si no tiene el cuadro de búsqueda, en el menú de inicio seleccione Ejecutar y en el cuadro de ejecución escriba powershell y presione Entrar.

Para obtener detalles completos sobre cómo usar este cmdlet, incluidas todas sus opciones, consulte el artículo de technet de Microsoft:
http://technet.microsoft.com/en-us/library/hh849760.aspx

Topo matricial
fuente
Parecía muy prometedor, pero no funciona para mí. Si lo hago net use y: ...., inicie PowerShell y lo hago get-psdrive, ya veo Y. Hacerlo lo remove-psdrive -Name Yelimina. Pero entonces net usetodavía lo muestra, y todavía puedo usar la unidad Y:. (Eso estaba usando PS v2. Aparentemente funciona con v4.)
Glen Little
Powershell 4.0 fue lanzado hace un par de semanas ... technet.microsoft.com/en-us/library/hh847820.aspx
Glen Little
@GlenLittle ¿Pero esto elimina la letra de unidad o la desconecta mientras guarda la letra? Si lo elimina, ¿no es esto lo mismo que net use Y: /delete?
Rik
Finalmente capaz de probarlo. Desafortunadamente, esto parece imitar Net use /deletecomo adivinó @Rik. No veo una diferencia, en lo que respecta a las unidades de red.
Glen Little
1

Okay. Podría tener una solución. Intenté buscar el /savecredparámetro de net usepero no pude hacerlo funcionar correctamente, así que aquí hay otro enfoque:

Su problema fue la demora con Explorer después de la desconexión con la VPN.
Entonces, ¿por qué no ocultar las unidades de Explorer después de la desconexión para que no intente acceder a ellas?

Hay una clave de registro para ocultar las unidades de Explorer:

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

y HKEY_xxx pueden ser HKEY_LOCAL_MACHINEy HKEY_CURRENT_USER.

Debajo de esta publicación hay un resumen de qué valor NoDrivesdebe contener.
(agregue los números para las unidades).


He creado un pequeño archivo por lotes donde no tiene que hacer los cálculos usted mismo.
Es un archivo por lotes "alternar".

Ejecútelo una vez para conectarse a su "Mi VPN".
Ejecutarlo de nuevo a la desconexión y ocultar las unidades I, J y K .

Puede dividir esto fácilmente en dos archivos por lotes, pero obtiene el punto ... También podría simplificar este archivo por lotes si establece el número de NoDrivesusted mismo en lugar de dejar que el lote haga el cálculo.

Esto debe ejecutarse como administrador. (es posible elevar automáticamente pero eso es muy avanzado)

Si concede permiso a sí mismo en la llave NoDrivesque no tiene que ejecutar esto como administrador. Simplemente abra regedit.exe, busque esta clave y haga clic en "Editar> Permisos" y otórguese "Control total" sobre esta clave.

@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:
el Explorador de Windows debe cerrarse y abrirse nuevamente antes de que las unidades estén ocultas (o visibles de nuevo).


Configuraciones 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 
Rik
fuente
Parece interesante ... tendré que probar esto. ¡Me encanta el uso de las matemáticas bit a bit en el archivo por lotes!
Glen Little
0

No sé cómo hacer esto, pero haría un script para agregar la unidad asignada para facilitar la vida.

  1. Cree un archivo con la extensión .bat (Ej. Map_drives.bat)
  2. Dentro del archivo agregue una línea como esta net use J: \\server\folder
  3. Haga doble clic en ese archivo y asignará su unidad
mvndaai
fuente
Gracias por la respuesta. Haría esto, pero algunas de las unidades necesitan diferentes autenticaciones id / pw, y no quiero ponerlas en un script.
Glen Little