有没有办法“断开”映射的网络驱动器,但不删除映射?


12

例如,当我输入时,net use我可能会看到以下内容:

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

发生这种情况时,Windows资源管理器在执行像在C:驱动器上创建新文件夹这样简单的操作时会有10到20秒的延迟。过了一会儿,K:驱动器将改为“断开连接”。

我想要做的是以某种方式强制K:驱动器断开连接或不可用,但不会丢失经过身份验证的映射。


2
出于好奇,为什么你认为你需要这个?
Zoredache 2013年

2
我连接到VPN,使用K:驱动器,然后断开VPN连接。在那之后,我的资源管理器通常很慢,直到它最终标记K:断开连接。这是一种简化,因为我有各种脚本需要的3个以上的驱动器映射,并且可能每天多次连接/断开VPN。
Glen Little

1
@GlenLittle在映射驱动器时,您是否尝试取消选中“登录时重新连接”选项?
摩西

4
为什么不制作脚本来连接和断开驱动器(包括删除映射)。就像在这里你甚至可以创建一个自动连接到VPN的脚本和一个断开连接的脚本(包括所有驱动器映射的东西)
Rik

4
A net use \\serverB\share2 /delete应该做的伎俩(它断开驱动器但不影响映射)
Paolo Gibellini 2013年

Answers:


1

Microsoft似乎正试图将此类管理任务移至PowerShell。

在您的特定情况下,要使用的cmdlet是Remove-PSDrive。Remove-PSDrive将完全满足您的要求:断开映射的网络驱动器。您的方案的语法是:

Remove-PSDrive -Name K.

要访问PowerShell命令行,您可以在其中运行该cmdlet,打开开始菜单,然后在搜索框中键入powershell。如果您没有搜索框,则从开始菜单中选择Run,然后在运行框中键入powershell并按Enter键。

有关如何使用此cmdlet(包括其所有选项)的完整详细信息,请参阅Microsoft的technet文章:http
//technet.microsoft.com/en-us/library/hh849760.aspx


听起来非常有前途,但对我不起作用。如果我这样做net use y: ....,那么启动PowerShell并执行get-psdrive,我看到Y列出。做remove-psdrive -Name Y删除它。但是net use仍然显示它,我仍然可以使用Y:驱动器。(那是使用PS v2。显然适用于v4。)
Glen Little

Powershell 4.0几周前发布了...... technet.microsoft.com/en-us/library/hh847820.aspx
Glen Little

@GlenLittle但这是否删除了驱动器号或在保留字母时断开连接?如果它删除它,这不是一样的net use Y: /delete吗?
Rik

终于能够尝试了。不幸的是,这似乎模仿Net use /delete了@Rik所猜测的。就网络驱动器而言,我没有看到任何区别。
Glen Little

1

好。我可能有一个解决方案。我试着查看/savecred参数,net use但无法让它正常工作,所以这是另一种方法:

麻烦在于与VPN断开后Explorer的延迟。
那么为什么不在断开连接后从资源管理器中隐藏驱动器,这样它就不会尝试访问它们。

有一个注册表项可以从资源管理器中隐藏驱动器:

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

和HKEY_xxx都可以HKEY_LOCAL_MACHINEHKEY_CURRENT_USER

在这篇文章下面有一个关于NoDrives应该保持什么价值的摘要。
(添加驱动器的编号)。


我创建了一个小型批处理文件,您无需自己进行计算。
这是一个'toggle' - 批处理文件。

运行一次以连接到“我的VPN”。
再次运行断开和隐藏驱动器的I,J和K

您可以轻松地将其拆分为两个批处理文件但是您明白了......如果您设置NoDrives自己的编号而不是让批处理进行计算,您也可以简化此批处理文件。

这需要以管理员身份运行。(它可以自动提升但是非常先进)

如果您授予自己的关键权限NoDrives,你执行这个以管理员身份。只需打开regedit.exe,浏览到此密钥并单击“编辑>权限”并授予自己“完全控制”此密钥。

@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

注意:
在隐藏驱动器(或再次可见)之前,需要关闭并再次打开Windows资源管理器。


设置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 

看起来很有趣......我将不得不尝试这个。喜欢在批处理文件中使用按位数学!
Glen Little

0

我不知道如何做到这一点,但会创建一个脚本来添加映射驱动器,让生活变得轻松。

  1. 创建扩展名为.bat的文件(例如map.drives.bat)
  2. 在文件中添加这样的行 net use J: \\server\folder
  3. 双击该文件,它将映射您的驱动器

谢谢你的回答。我会这样做,但有些驱动器需要不同的id / pw认证,我不想把它们放到脚本中。
Glen Little
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.