C'è un modo per "disconnettere" un'unità di rete mappata, ma NON rimuovere la mappatura?


12

Ad esempio, quando scrivo net usepotrei vedere qualcosa di simile:

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

In questo caso, Esplora risorse ha ritardi di 10-20 secondi quando si esegue un'operazione semplice come la creazione di una nuova cartella sul mio disco C :. Dopo un po ', l'unità K: cambierà per dire "Disconnesso".

Quello che voglio fare è forzare in qualche modo l'unità K: a essere disconnessa o non disponibile, ma senza perdere la mappatura autenticata.


2
Solo per curiosità, perché pensi di aver bisogno di questo?
Zoredache,

2
Mi collego a una VPN, utilizzo l'unità K:, quindi disconnetto la VPN. Dopodiché, il mio Explorer è spesso lento, fino a quando non segna K: come disconnesso. Questa è una semplificazione, poiché ho più di 3 mappature di unità necessarie per vari script e posso connettermi / disconnettermi dalla VPN più volte al giorno.
Glen Little,

1
@GlenLittle Hai provato a deselezionare l'opzione "riconnetti all'accesso" quando mappi il disco?
Mosè,

4
Perché non creare uno script per connettere e disconnettere le unità (inclusa la rimozione della mappatura). Come qui Potresti persino creare uno script che si connette automaticamente alla VPN e uno script per disconnettersi (incluso tutto il materiale di mappatura dell'unità)
Rik

4
A net use \\serverB\share2 /deletedovrebbe fare il trucco (disconnette l'unità ma non affligge la mappatura)
Paolo Gibellini

Risposte:


1

Microsoft sembra tentare di spostare attività amministrative come questa su PowerShell.

Nel caso specifico, il cmdlet da utilizzare è Remove-PSDrive. Remove-PSDrive farà esattamente quello che stai chiedendo: disconnetti un'unità di rete mappata. La sintassi per il tuo scenario sarebbe:

Remove-PSDrive -Name K

Per accedere a una riga di comando di PowerShell in cui è possibile eseguire quel cmdlet, aprire il menu Start e nella casella di ricerca digitare PowerShell. Se non si dispone della casella di ricerca, dal menu Start selezionare Esegui e nella casella Esegui digitare PowerShell e premere Invio.

Per i dettagli completi su come utilizzare questo cmdlet, comprese tutte le relative opzioni, consultare l'articolo del Technet di Microsoft:
http://technet.microsoft.com/en-us/library/hh849760.aspx


Sembrava molto promettente, ma non funziona per me. Se lo faccio net use y: ...., quindi avviare PowerShell e farlo get-psdrive, vedo Yelencato. Fare lo remove-psdrive -Name Yrimuove. Ma poi net uselo mostra ancora, e posso ancora usare l'unità Y :. (Stava usando PS v2. Apparentemente funziona con v4.)
Glen Little,

Powershell 4.0 è stato rilasciato un paio di settimane fa ... technet.microsoft.com/en-us/library/hh847820.aspx
Glen Little

@GlenLittle Ma questo rimuove la lettera di unità o la disconnette mantenendo la lettera? Se lo rimuove, non è lo stesso di net use Y: /delete?
Rik

Finalmente in grado di provarlo. Sfortunatamente, questo sembra imitare Net use /deletecome indovinato @Rik. Non vedo alcuna differenza, per quanto riguarda le unità di rete.
Glen Little,

1

Ok. Potrei avere una soluzione. Ho provato a esaminare il /savecredparametro di net usema non sono riuscito a farlo funzionare correttamente, quindi ecco un altro approccio:

Il tuo problema è stato il ritardo con Explorer dopo la disconnessione con la VPN.
Quindi perché non nascondere le unità da Explorer dopo la disconnessione in modo che non provi ad accedervi.

Esiste una chiave di registro per nascondere le unità da Explorer:

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

e HKEY_xxx possono essere sia HKEY_LOCAL_MACHINEe HKEY_CURRENT_USER.

Sotto questo post c'è un riepilogo su quale valore NoDrivesdovrebbe contenere.
(aggiungi i numeri per le unità).


Ho creato un piccolo file batch in cui non è necessario eseguire i calcoli da soli.
È un file batch 'toggle'.

Eseguilo una volta per connetterti a "La mia VPN".
Eseguire di nuovo per staccare e nascondere le unità I, J e K .

Puoi dividerlo facilmente in due file batch ma ottieni il punto ... Puoi anche semplificare questo file batch se imposti il ​​numero di NoDriveste stesso invece di lasciare che il batch faccia il calcolo.

Questo deve essere eseguito come amministratore. (è possibile elevare automaticamente ma è molto avanzato)

Se ti concedi l'autorizzazione per la chiave, NoDrivesnon devi eseguirla come amministratore. Basta aprire regedit.exe, selezionare questa chiave e fare clic su "Modifica> Autorizzazioni" e concedere "Controllo completo" su questa chiave.

@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:
Windows Explorer deve essere chiuso e riaperto prima che le unità siano nascoste (o nuovamente visibili).


Impostazioni per 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 

Sembra interessante ... Dovrò provare questo. Adoro l'uso della matematica bit a bit nel file batch!
Glen Little,

0

Non so come farlo, ma farei uno script per aggiungere l'unità mappata per semplificare la vita.

  1. Crea un file con l'estensione .bat (es. Map_drives.bat)
  2. All'interno del file aggiungi una riga come questa net use J: \\server\folder
  3. Fai doppio clic su quel file e mapperà il tuo disco

Grazie per la risposta. Vorrei farlo, ma alcune unità richiedono diverse autenticazioni id / pw e non voglio inserirle in uno script.
Glen Little
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.