Script - Cách kiểm tra nếu đường dẫn mạng khả dụng và sau đó ánh xạ nó


13

Tôi muốn một kịch bản đăng nhập / trình bảo vệ màn hình để kiểm tra xem đường dẫn mạng có sẵn hay không và sau đó ánh xạ nó tới một đơn vị. Nếu không có sẵn, nó sẽ ngắt kết nối / không kết nối.

Đường dẫn mạng là \ 192.168.1.1 \ drive1

Ngoài ra tôi cần sử dụng tên người dùng / mật khẩu để kết nối với đường dẫn đó.

Câu trả lời:


15

Bạn có thể sử dụng existlệnh để kiểm tra xem đường dẫn có hợp lệ không:

if exist \\192.168.1.1\drive1 net use s: \\192.168.1.1\drive1

Nếu bạn cần cung cấp thông tin đăng nhập (tức là người dùng Windows hiện tại của bạn không có quyền truy cập vào chia sẻ đó), hãy thêm /user:

if exist \\192.168.1.1\drive1 net use s: \\192.168.1.1\drive1 /user:myDomain\myUser myPassword

Nếu có cơ hội chia sẻ đã tồn tại và bạn muốn xóa nó nếu nó không còn nữa, hãy thêm một elsemệnh đề:

if exist \\192.168.1.1\drive1 (net use s: \\192.168.1.1\drive1) else (net use /delete s:)

Và một lần nữa, thêm /usernếu bạn cần nó.

Bạn có thể liên kết tất cả lại với nhau trong một tệp bó tương tự như sau:

@echo off
if exist \\192.168.1.1\drive1 (set shareExists=1) else (set shareExists=0)
if exist y:\ (set driveExists=1) else (set driveExists=0)
if %shareExists%==1 if not %driveExists%==1 (net use y: \\192.168.1.1\drive1)
if %shareExists%==0 if %driveExists%==1 (net use /delete y:)
set driveExists=
set shareExists=

ok Tôi chỉ dán nó trong notepad và lưu dưới dạng .vbs nhưng khi tôi chạy một tác vụ của nó thì nó có lỗi Visual basic không?
FernandoSBS

1
Lệnh đó là một lệnh batch - nó sẽ hoạt động từ bất kỳ tệp bó tiêu chuẩn nào.
Geoff

C: \ Windows> nếu tồn tại Có thêm trợ giúp bằng cách gõ NET HELPMSG 2250.
FernandoSBS

Tôi sẽ thêm một chỉnh sửa ...
Geoff

Tôi xin lỗi? (5 ký tự)
FernandoSBS

6

Powershell sẽ làm điều này dễ dàng:

If(Test-Path \\192.168.1.1\Drive1)
  {
    net use M: \\192.168.1.1\Drive1 /user:Domain\UserName Password
  }
else {net use M: /delete > nul}

ok Tôi chỉ dán nó trong notepad và lưu dưới dạng .vbs nhưng khi tôi chạy một tác vụ của nó thì nó có lỗi Visual basic không?
FernandoSBS

1
Lưu nó dưới dạng .ps1 và chạy nó từ Powershell.
Austin T Pháp

Tôi không quen thuộc với powershell, làm cách nào tôi có thể tự động hóa nó trong Trình lập lịch tác vụ?
FernandoSBS

Bạn thực sự nên chia 2 câu hỏi. Đây là một trang web QA. Ngoài ra, hãy google nó nếu bạn chưa có: google.com/
Austin T Pháp

OK đã nhận nó. Phần thưởng của việc sử dụng powershell là gì?
FernandoSBS

0

Nó chỉ đơn giản hơn khi chỉ cần cố gắng ánh xạ nó bằng Windows File explorer hoặc sử dụng lệnh net use. Hoặc nó hoạt động hoặc nó không.


Nếu nó khả dụng, tôi muốn được kết nối tự động khi đăng nhập / bảo vệ màn hình, nếu không thì tôi muốn xóa nó khỏi các ổ đĩa được ánh xạ. Vì vậy, những gì bạn đề nghị không phải là một lựa chọn.
FernandoSBS

Tôi không hiểu, nếu bạn phát hành sử dụng mạng, nếu lệnh thành công, nó sẽ được kết nối. Nếu lệnh thất bại, thì nó sẽ bị xóa khỏi các ổ đĩa được ánh xạ. Có vẻ đơn giản với tôi.
mdpc

0

Đây là mã cuối cùng:

function run{
net use
If(Test-Path \\192.168.1.1\volume1)
  {
    if (((New-Object System.IO.DriveInfo("Y:")).DriveType -ne "NoRootDirectory")) 
        {
            "already mounted and accessible"
        }
    else
        {
            net use Y: \\192.168.1.1\volume1
            "mounting"
        }
  }
else { 
    if (((New-Object System.IO.DriveInfo("Y:")).DriveType -ne "NoRootDirectory"))
        {
            net use Y: /delete
            "removing"
        }
}
exit 4
}

run 

Tôi sử dụng Test-Path \\192.168.1.1\volume1như đề xuất để kiểm tra xem đường dẫn mạng có sẵn không và ((New-Object System.IO.DriveInfo("Y:")).DriveType -ne "NoRootDirectory")để kiểm tra xem ký tự ổ đĩa có tồn tại không.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.