มีวิธีการ "ตัดการเชื่อมต่อ" ไดรฟ์เครือข่ายที่แมป แต่ไม่ลบการแมปออกหรือไม่


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: จะเปลี่ยนเป็นพูดว่า "Disconnected"

สิ่งที่ฉันต้องการทำคือบังคับให้ K: ไดรฟ์ถูกตัดการเชื่อมต่อหรือไม่พร้อมใช้งาน แต่ไม่สูญเสียการแม็พที่ผ่านการตรวจสอบสิทธิ์


2
แค่อยากรู้อยากเห็นทำไมคุณคิดว่าคุณต้องการสิ่งนี้?
Zoredache

2
ฉันเชื่อมต่อกับ VPN ใช้ไดรฟ์ K: แล้วยกเลิกการเชื่อมต่อ VPN หลังจากนั้น Explorer ของฉันมักจะช้าจนกระทั่งในที่สุดมันก็ทำเครื่องหมายว่า K: ถูกตัดการเชื่อมต่อ นี่เป็นเรื่องง่ายเนื่องจากฉันมีการแมปไดรฟ์มากกว่า 3 ตัวที่สคริปต์ต่าง ๆ ต้องการและอาจเชื่อมต่อ / ตัดการเชื่อมต่อจาก VPN วันละหลายครั้ง
เกลน Little

1
@GlenLittle คุณลองยกเลิกการเลือกตัวเลือก "เชื่อมต่ออีกครั้งเมื่อเข้าสู่ระบบ" เมื่อคุณแมปไดรฟ์หรือไม่
โมเสส

4
ทำไมไม่สร้างสคริปต์เพื่อเชื่อมต่อและยกเลิกการเชื่อมต่อไดรฟ์ (รวมถึงการลบการแมป) เช่นเดียวกับที่นี่คุณยังสามารถสร้างสคริปต์ซึ่งเชื่อมต่อกับ VPN โดยอัตโนมัติและสคริปต์ที่จะตัดการเชื่อมต่อ (รวมทุกสิ่งที่ไดรฟ์ทำแผนที่บริการ)
Rik

4
A net use \\serverB\share2 /deleteควรทำกลอุบาย (มันตัดการเชื่อมต่อไดรฟ์ แต่ไม่กระทบแผนที่)
Paolo Gibellini

คำตอบ:


1

Microsoft ดูเหมือนจะพยายามย้ายงานการดูแลเช่นนี้ไปยัง PowerShell

ในกรณีเฉพาะของคุณ cmdlet ที่จะใช้คือ Remove-PSDrive Remove-PSDrive จะทำสิ่งที่คุณต้องการ: ตัดการเชื่อมต่อไดรฟ์เครือข่ายที่แมป ไวยากรณ์สำหรับสถานการณ์ของคุณจะเป็น:

เอาออก PSDrive -Name K

หากต้องการไปที่บรรทัดคำสั่ง powershell ซึ่งคุณสามารถเรียกใช้ cmdlet นั้นให้เปิดเมนูเริ่มและในช่องค้นหาเพียงพิมพ์ PowerShell หากคุณไม่มีช่องค้นหาจากเมนูเริ่มต้นให้เลือก Run และในช่อง Run ประเภท PowerShell แล้วกด Enter

สำหรับรายละเอียดเกี่ยวกับวิธีใช้ cmdlet นี้รวมถึงตัวเลือกทั้งหมดดูบทความด้านเทคนิคของ 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.)
เกลน Little

Powershell 4.0 เปิดตัวสองสามสัปดาห์ที่ผ่านมา ... technet.microsoft.com/en-us/library/hh847820.aspx
Glen Little

@GlenLittle แต่สิ่งนี้จะลบตัวอักษรของไดรฟ์หรือปลดมันในขณะที่เก็บตัวอักษรไว้หรือไม่? หากมันลบออกจะไม่เหมือนกับสิ่งนี้net use Y: /deleteใช่ไหม
Rik

ในที่สุดก็สามารถที่จะลอง น่าเสียดายที่นี่ดูเหมือนจะเลียนแบบNet use /delete@Rik ซึ่งเดาได้ ฉันไม่เห็นความแตกต่างเท่าที่ไดรฟ์เครือข่ายมีความกังวล
เกลน Little

1

ตกลง. ฉันอาจมีทางออก ฉันพยายามค้นหา/savecredพารามิเตอร์ของnet useแต่ไม่สามารถทำให้มันทำงานได้อย่างถูกต้องดังนั้นนี่เป็นอีกวิธีหนึ่ง:

ปัญหาของคุณคือความล่าช้ากับ Explorer หลังจากตัดการเชื่อมต่อกับ VPN
เหตุใดจึงไม่ซ่อนไดรฟ์จาก Explorerหลังจากยกเลิกการเชื่อมต่อดังนั้นจึงไม่พยายามเข้าถึงไดรฟ์

มีคีย์รีจิสทรีเพื่อซ่อนไดรฟ์จาก Explorer:

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

HKEY_xxx และทั้งสามารถและHKEY_LOCAL_MACHINEHKEY_CURRENT_USER

ด้านล่างโพสต์นี้มีข้อสรุปว่าNoDrivesควรจะเก็บค่าอะไร
(เพิ่มตัวเลขสำหรับไดรฟ์)


ฉันได้สร้าง batchfile ขนาดเล็กที่คุณไม่ต้องทำการคำนวณด้วยตัวเอง
มันเป็น 'toggle'-batchfile

เรียกใช้หนึ่งครั้งเพื่อเชื่อมต่อกับ "My VPN" ของคุณ
เรียกใช้อีกครั้งเพื่อตัดการเชื่อมต่อและซ่อนไดรฟ์ I, J และ K

คุณสามารถแบ่งมันออกเป็นสองชุดได้อย่างง่ายดาย แต่คุณได้คะแนน ... คุณสามารถทำให้ batchfile นี้ง่ายขึ้นหากคุณกำหนดจำนวนของ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 Explorer อีกครั้งก่อนที่จะซ่อนไดรฟ์ (หรือมองเห็นได้อีกครั้ง)


การตั้งค่าสำหรับ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 

ดูน่าสนใจ ... ฉันจะต้องลองสิ่งนี้ รักการใช้คณิตศาสตร์ระดับบิตในไฟล์แบตช์!
เกลน Little

0

ฉันไม่รู้วิธีการทำเช่นนี้ แต่จะสร้างสคริปต์เพื่อเพิ่มไดรฟ์ที่แมปเพื่อทำให้ชีวิตง่ายขึ้น

  1. สร้างไฟล์ที่มีนามสกุล. bat (เช่น map_drives.bat)
  2. ภายในไฟล์เพิ่มบรรทัดเช่นนี้ net use J: \\server\folder
  3. ดับเบิ้ลคลิกที่ไฟล์นั้นและมันจะแมปไดรฟ์ของคุณ

ขอบคุณสำหรับคำตอบ. ฉันจะทำสิ่งนี้ แต่ไดรฟ์บางตัวจำเป็นต้องใช้การตรวจสอบสิทธิ์ id / pw ที่แตกต่างกันและฉันไม่ต้องการใส่สิ่งเหล่านั้นลงในสคริปต์
เกลน Little
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.