Есть ли способ «отключить» подключенный сетевой диск, но НЕ удалить его?

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 Explorer имеет 10 - 20 секундную задержку, когда делает что-то такое же простое, как создание новой папки на моем диске C :. Через некоторое время диск K: изменится на «Отключено».

То, что я хочу сделать, так или иначе заставить диск K: отключиться или быть недоступным, но без потери аутентифицированного сопоставления.

Глен Литтл
источник
2
Просто из любопытства, почему вы думаете, что вам это нужно?
Зоредаче
2
Я подключаюсь к VPN, использую диск K :, затем отключаю VPN. После этого мой проводник часто работает медленно, пока, наконец, не пометит K: как отключенный. Это упрощение, поскольку у меня есть более 3 сопоставлений дисков, необходимых для различных сценариев, и я могу подключаться / отключаться от VPN несколько раз в день.
Глен Литтл
1
@GlenLittle Вы пытались снять флажок «переподключиться при входе в систему» ​​при подключении диска?
Моисей
4
Почему бы не сделать скрипт для подключения и отключения дисков (включая удаление сопоставления). Как здесь. Вы могли бы даже создать сценарий, который автоматически подключается к VPN, и сценарий для отключения (включая все элементы отображения дисков)
Rik
4
А net use \\serverB\share2 /deleteдолжен сделать свое дело (он отключает диск, но не влияет на отображение)
Паоло Гибеллини

Ответы:

1

Похоже, что Microsoft пытается перенести такие административные задачи в PowerShell.

В вашем конкретном случае используется командлет Remove-PSDrive. Remove-PSDrive сделает именно то, что вы просите: отключите подключенный сетевой диск. Синтаксис для вашего сценария будет:

Remove-PSDrive -Name K

Чтобы перейти к командной строке powershell, где вы можете запустить этот командлет, откройте меню «Пуск» и в поле поиска просто введите powershell. Если у вас нет поля поиска, выберите в меню «Пуск» пункт «Выполнить», в поле «Выполнить» введите powershell и нажмите клавишу ввода.

Подробные сведения о том, как использовать этот командлет, включая все его параметры, см. В технической статье Microsoft:
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.)
Глен Литтл
Powershell 4.0 был выпущен пару недель назад ... technet.microsoft.com/en-us/library/hh847820.aspx
Глен Литтл
@GlenLittle Но удаляет ли это букву диска или отсоединяет ее, сохраняя букву? Если это удаляет его, разве это не то же самое, что net use Y: /delete?
Рик
Наконец-то смог попробовать. К сожалению, это, кажется, подражает, Net use /deleteкак и предполагал @Rik. Я не вижу разницы в том, что касается сетевых дисков.
Глен Литтл
1

Ok. У меня может быть решение. Я попытался посмотреть на /savecredпараметр, net useно не смог заставить его работать должным образом, так что вот другой подход:

Ваша проблема заключалась в задержке с Explorer после отключения от VPN.
Так почему бы не спрятать диски от Проводника после отключения, чтобы он не пытался получить к ним доступ.

Есть раздел реестра, чтобы скрыть диски от Explorer:

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

и HKEY_xxx может быть HKEY_LOCAL_MACHINEи HKEY_CURRENT_USER.

Ниже этого поста есть краткое изложение того, какое значение NoDrivesдолжно содержать.
(добавить номера для дисков).


Я создал небольшой пакетный файл, где вам не нужно делать вычисления самостоятельно.
Это пакетный файл с переключением.

Запустите его один раз, чтобы подключиться к «Моему 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 
Rik
источник
Выглядит интересно ... Я должен попробовать это. Любите использование побитовой математики в командном файле!
Глен Литтл
0

Я не знаю, как это сделать, но сделал бы скрипт для добавления подключенного диска, чтобы облегчить жизнь.

  1. Создайте файл с расширением .bat (например, map_drives.bat)
  2. Внутри файла добавьте такую ​​строку net use J: \\server\folder
  3. Дважды щелкните этот файл, и он отобразит ваш диск
mvndaai
источник
Спасибо за ответ. Я бы сделал это, но некоторые диски требуют разных аутентификаций id / pw, и я не хочу помещать их в скрипт.
Глен Литтл