Ánh xạ ổ đĩa trước khi VPN sẵn sàng? Hãy gắn điều kiện vào máy chủ
Tập lệnh đăng nhập ánh xạ thư mục chia sẻ trước khi đường hầm có tuyến. Thăm dò một máy chủ chỉ phản hồi qua nó, sau đó ánh xạ trong phiên của người dùng và ghi lại kết quả.
Ký tự ổ đĩa xuất hiện khi đăng nhập và sau đó mở ra như một thư mục trống, hoặc với dấu gạch chéo đỏ và thông báo về một tài nguyên mạng không khả dụng. Quyền thường vẫn ổn. Điều đã xảy ra là lệnh ánh xạ chạy trong khoảng thời gian máy khách VPN tồn tại nhưng không có tuyến đến máy chủ tệp, và Windows ghi lại thất bại đó như trạng thái của ổ đĩa. Cách khắc phục là ngừng coi việc ánh xạ là thứ xảy ra khi đăng nhập và coi nó là bước cuối cùng của một chuỗi kết nối.
Vì sao việc ánh xạ chạy quá sớm
Tập lệnh đăng nhập bắt đầu khi phiên bắt đầu. Máy khách VPN kết nối trong lúc đăng nhập thêm dòng thời gian của riêng nó lên trên: tiến trình có thể đang chạy, bộ điều hợp ảo có thể tồn tại, và tuyến đến mạng con của văn phòng có thể vẫn còn thiếu. Ba trạng thái này trông giống nhau từ góc nhìn của tập lệnh và chỉ một trong số chúng hoạt động.
Một số môi trường phản ứng bằng cách lặp lại cùng dòng thất bại ở mỗi lần đăng nhập, tạo ra một người dùng đã học cách nhấp đúp vào ổ đĩa và một tập lệnh chưa bao giờ tự thành công.
Bản thân ổ đĩa làm tình hình tệ hơn. Ổ đĩa được ánh xạ là một đối tượng phiên, và sau khi Windows đánh dấu nó là không khả dụng, biểu tượng có thể vẫn hỏng rất lâu sau khi đường hầm khỏe mạnh. Đó là lý do vì sao ánh xạ lại bằng tay hoạt động trong khi tập lệnh dường như không làm gì. Phiên nhớ thất bại, không nhớ ý định đằng sau nó.
Trạng thái đã kết nối không phải là tuyến
Biểu tượng VPN trên khay hệ thống cho biết đường hầm có được nâng lên hay không. Nó không nói gì về việc có tuyến đến một máy chủ cụ thể hay không, DNS có phân giải tên đó thành địa chỉ đường hầm hay không, hay tường lửa của chính máy chủ có chấp nhận bạn hay không.
Đây là ba thất bại riêng biệt với cùng một kết quả nhìn thấy được, và việc đặt điều kiện vào biểu tượng khay sẽ hợp nhất chúng thành một tín hiệu không đáng tin cậy.
Một bước kiểm tra mức sẵn sàng nêu tên máy chủ bạn thực sự cần phân biệt chúng, vì nó thất bại cho đến khi tuyến cụ thể hoạt động, chứ không phải cho đến khi một giao diện nào đó tự báo là đã kết nối.
Hãy gắn điều kiện vào máy chủ, không phải máy khách
Chọn một máy chủ chỉ có thể tiếp cận qua đường hầm và chờ nó trước khi ánh xạ bất cứ thứ gì. Đoạn bên dưới kết nối đến một mục VPN đã lưu của Windows, thăm dò máy chủ tệp rồi ánh xạ ổ đĩa.
@echo off
set server=fileserver.corp.example
rasdial "Office VPN" /disconnect
rasdial "Office VPN"
:wait
ping -n 1 -w 1000 %server% >nul || (
timeout /t 5 /nobreak >nul
goto wait
)
net use Z: \\%server%\share /persistent:no
Ping là một phép thăm dò mức sẵn sàng, không phải kiểm tra quyền. Nếu ICMP bị lọc trên mạng của bạn, hãy thăm dò dịch vụ bạn thực sự dùng: net view \\%server% để kiểm tra nhanh, hoặc một bài kiểm tra TCP ngắn tới cổng 445 trong PowerShell. Cả hai đều gắn điều kiện vào điều quan trọng.
Thêm một số lần thử có giới hạn. Vòng chờ không có giới hạn biến một đường hầm hỏng thành một phiên không bao giờ đăng nhập xong, và đó là một cuộc gọi hỗ trợ tệ hơn ký tự ổ đĩa bị thiếu.
Hãy làm cho nó chạy lại được và nhận biết phiên
Chạy nó bên trong phiên của chính người dùng. Một tác vụ chạy dưới dạng SYSTEM đặt ổ đĩa vào một phiên hoàn toàn khác, và người dùng đã đăng nhập không bao giờ thấy kết quả. Điều đó cho bạn một tập lệnh báo cáo thành công và một màn hình không có ổ đĩa.
Kiểm tra trước khi ánh xạ và chỉ xóa mục cũ. net use Z: /delete trả về lỗi khi ký tự không được dùng, và lỗi đó an toàn để bỏ qua thay vì trở thành lý do từ bỏ phần còn lại của tập lệnh. Giữ /persistent:no để một lần thử thất bại không trở thành một lần thử kết nối lại vĩnh viễn về sau.
Và đừng đặt mật khẩu trong tệp. rasdial có thể dùng lại thông tin đăng nhập đã lưu cho mục VPN, và thư mục chia sẻ nên xác thực với tư cách người dùng đã đăng nhập. Nếu thư mục chia sẻ thực sự cần thông tin đăng nhập khác, hãy đăng ký chúng một lần cho mỗi người dùng bằng cmdkey thay vì nhúng chúng vào một tệp batch nằm trên thư mục chia sẻ đăng nhập. Bất kỳ ai đọc được thư mục chia sẻ đó cũng đọc được mật khẩu, và điều đó biến một tiện lợi thành một sự cố.
Chạy lại toàn bộ tập lệnh phải vô hại, vì đó chính là điều sẽ xảy ra. Người dùng kết nối lại, máy tính xách tay thức dậy, và cùng một đường mã chạy lại với trạng thái ban đầu khác.
Ghi lại đủ để chứng minh nửa nào đến muộn
Viết dấu thời gian, kết quả kiểm tra mức sẵn sàng và mã thoát của việc ánh xạ vào một tệp dưới hồ sơ người dùng. Khi báo cáo tiếp theo về một ổ đĩa bị thiếu đến, nhật ký đó trả lời câu hỏi duy nhất quan trọng: đường hầm đến muộn, hay thư mục chia sẻ từ chối?
Không có nó, mỗi lần tái diễn đều được điều tra từ đầu, và kết luận thường thấy là một thay đổi quyền không sửa được gì.
Kiểm tra chuỗi một lần từ khởi động nguội và một lần từ chế độ ngủ. Trường hợp thức dậy là nơi thứ tự thường vỡ nhất, vì phiên tiếp tục trước khi mạng tiếp tục và tập lệnh thấy một máy đã đăng nhập từ nhiều giờ trước.