Apakah ada cara untuk "memutus" drive jaringan yang dipetakan, tetapi TIDAK menghapus pemetaan?

12

Misalnya, ketika saya mengetik net usesaya mungkin melihat sesuatu seperti:

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

Ketika ini terjadi, Windows Explorer mengalami keterlambatan 10 - 20 detik ketika melakukan sesuatu yang sederhana seperti membuat folder baru di drive C: saya. Setelah beberapa saat, drive K: akan berubah menjadi mengatakan "Terputus".

Apa yang ingin saya lakukan adalah entah bagaimana memaksa drive K: untuk Terputus atau Tidak Tersedia, tetapi tanpa kehilangan pemetaan yang diautentikasi.

Glen Little
sumber
2
Hanya ingin tahu, mengapa Anda pikir Anda membutuhkan ini?
Zoredache
2
Saya terhubung ke VPN, gunakan drive K:, lalu lepaskan VPN. Setelah itu, Explorer saya sering lambat, sampai akhirnya menandakan K: sebagai terputus. Ini adalah penyederhanaan, karena saya memiliki lebih dari 3 pemetaan drive yang dibutuhkan oleh berbagai skrip, dan dapat terhubung / terputus dari VPN beberapa kali sehari.
Glen Little
1
@GlenLittle Sudahkah Anda mencoba menghapus centang pada opsi "menghubungkan kembali saat masuk" ketika Anda memetakan drive?
Moses
4
Mengapa tidak membuat skrip untuk menghubungkan dan memutuskan drive (termasuk menghapus pemetaan). Seperti di sini, Anda bahkan dapat membuat skrip yang terhubung ke VPN secara otomatis dan skrip untuk memutuskan sambungan (termasuk semua hal pemetaan drive)
Rik
4
A net use \\serverB\share2 /deleteharus melakukan triknya (ini memutus drive tetapi tidak mempengaruhi pemetaan)
Paolo Gibellini

Jawaban:

1

Microsoft tampaknya mencoba untuk memindahkan tugas administratif seperti ini ke PowerShell.

Dalam kasus khusus Anda, cmdlet yang digunakan adalah Remove-PSDrive. Remove-PSDrive akan melakukan persis apa yang Anda minta: lepaskan drive jaringan yang dipetakan. Sintaks untuk skenario Anda adalah:

Hapus-PSDrive -Nama K

Untuk sampai ke baris perintah PowerShell tempat Anda dapat menjalankan cmdlet itu, buka menu mulai, dan di kotak pencarian cukup ketik PowerShell. Jika Anda tidak memiliki kotak pencarian, maka dari menu mulai pilih Run dan di kotak run ketik PowerShell dan tekan enter.

Untuk detail lengkap tentang cara menggunakan cmdlet ini termasuk semua opsi itu, lihat artikel Microsoft di
http://technet.microsoft.com/en-us/library/hh849760.aspx

Matriks Mole
sumber
Kedengarannya sangat menjanjikan, tetapi tidak berhasil untuk saya. Jika saya melakukannya net use y: ...., maka mulai PowerShell dan lakukan get-psdrive, saya lihat Ytercantum. Melakukan remove-psdrive -Name Ymenghapusnya. Tapi kemudian net usemasih menunjukkannya, dan saya masih bisa menggunakan drive Y :. (Itu menggunakan PS v2. Rupanya bekerja dengan v4.)
Glen Little
Powershell 4.0 dirilis beberapa minggu yang lalu ... technet.microsoft.com/en-us/library/hh847820.aspx
Glen Little
@ GlenLittle Tapi apakah ini menghapus huruf drive atau putuskan sambil menyimpan surat itu? Jika menghapusnya, bukankah ini sama dengan net use Y: /delete?
Rik
Akhirnya bisa mencobanya. Sayangnya, ini sepertinya meniru Net use /deleteseperti dugaan @Rik. Saya tidak melihat perbedaan, sejauh menyangkut drive jaringan.
Glen Little
1

Baik. Saya mungkin punya solusi. Saya mencoba melihat ke dalam /savecredparameter net usetetapi tidak bisa berfungsi dengan baik jadi inilah pendekatan lain:

Masalah Anda adalah keterlambatan dengan Explorer setelah terputus dengan VPN.
Jadi mengapa tidak menyembunyikan drive dari Explorer setelah pemutusan sehingga tidak akan mencoba mengaksesnya.

Ada kunci registri untuk menyembunyikan drive dari Explorer:

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

dan HKEY_xxx dapat berupa HKEY_LOCAL_MACHINEdan HKEY_CURRENT_USER.

Di bawah posting ini ada ringkasan tentang nilai apa yang NoDrivesharus dimiliki.
(tambahkan angka untuk drive).


Saya telah membuat batchfile kecil di mana Anda tidak perlu melakukan perhitungan sendiri.
Ini adalah 'toggle'-batchfile.

Jalankan sekali untuk terhubung ke "My VPN" Anda.
Jalankan lagi untuk memutuskan dan menyembunyikan drive I, J dan K .

Anda dapat dengan mudah membagi ini dalam dua batchfile tetapi Anda mendapatkan intinya ... Anda juga dapat menyederhanakan batchfile ini jika Anda mengatur jumlah NoDrivesdiri Anda alih-alih membiarkan batch melakukan perhitungan.

Ini perlu dijalankan sebagai administrator. (Dimungkinkan untuk secara otomatis meningkatkan tetapi itu sangat maju)

Jika Anda memberi diri Anda izin pada kunci, NoDrivesAnda tidak harus menjalankan ini sebagai administrator. Cukup buka regedit.exe, telusuri kunci ini dan klik "Edit> Izin" dan beri diri Anda "Kontrol Penuh" atas kunci ini.

@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

Catatan:
Windows Explorer perlu ditutup dan dibuka lagi sebelum drive disembunyikan (atau terlihat lagi).


Pengaturan untuk 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
sumber
Terlihat menarik ... Saya harus coba ini. Senang menggunakan matematika bitwise dalam file batch!
Glen Little
0

Saya tidak tahu bagaimana melakukan ini, tetapi akan membuat skrip untuk menambahkan drive yang dipetakan untuk membuat hidup lebih mudah.

  1. Buat file dengan ekstensi .bat (Mis. Map_drives.bat)
  2. Di dalam file tambahkan baris seperti ini net use J: \\server\folder
  3. Klik dua kali pada file itu dan itu akan memetakan drive Anda
mvndaai
sumber
Terima kasih atas jawabannya. Saya akan melakukan ini, tetapi beberapa drive memerlukan otentikasi id / pw yang berbeda, dan saya tidak ingin memasukkannya ke dalam skrip.
Glen Little