สคริปต์ - วิธีตรวจสอบว่ามีเส้นทางเครือข่ายหรือไม่จากนั้นจึงทำการแมป


13

ฉันต้องการสคริปต์รักษาหน้าจอ / การเข้าสู่ระบบที่ตรวจสอบว่าเส้นทางเครือข่ายพร้อมใช้งานหรือไม่จากนั้นจับคู่กับหน่วย หากไม่สามารถใช้งานได้จะตัดการเชื่อมต่อ / ไม่เชื่อมต่อ

เส้นทางเครือข่ายคือ \ 192.168.1.1 \ drive1

ฉันต้องใช้ชื่อผู้ใช้ / รหัสผ่านเพื่อเชื่อมต่อกับเส้นทางนั้น

คำตอบ:


15

คุณสามารถใช้existคำสั่งเพื่อตรวจสอบว่าเส้นทางนั้นถูกต้องหรือไม่:

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

หากคุณต้องการให้ข้อมูลประจำตัว (เช่นผู้ใช้ Windows ปัจจุบันของคุณไม่สามารถเข้าถึงส่วนแบ่งนั้น) เพิ่ม/user:

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

หากมีโอกาสที่การแชร์มีอยู่แล้วและคุณต้องการลบหากไม่สามารถใช้งานได้อีกต่อไปให้เพิ่มส่วนelseคำสั่ง:

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

และเพิ่มอีกครั้ง/userหากคุณต้องการ

คุณสามารถรวมสิ่งนี้เข้าด้วยกันในไฟล์แบตช์คล้ายกับที่แสดงต่อไปนี้:

@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=

ตกลงฉันเพิ่งวางใน notepad และบันทึกเป็น. vbs แต่เมื่อฉันใช้งานมันให้ข้อผิดพลาดพื้นฐาน Visual?
FernandoSBS

1
คำสั่งนั้นเป็นชุดคำสั่ง - ควรทำงานได้จากไฟล์ชุดมาตรฐานใด ๆ
Geoff

C: \ Windows> ถ้ามีอยู่ \\ 192.168.1.1 \ volume1 (ใช้เน็ต y: \\ 192.168.1.1 \ volume1) e lse (ใช้เน็ต / ลบ y:) ไม่พบการเชื่อมต่อเครือข่าย ความช่วยเหลือเพิ่มเติมมีให้โดยการพิมพ์ NET HELPMSG 2250
FernandoSBS

ฉันจะเพิ่มการแก้ไข ...
Geoff

ฉันขอโทษ? (5 ตัวอักษร)
FernandoSBS

6

Powershell จะทำให้เป็นเรื่องง่าย:

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}

ตกลงฉันเพิ่งวางใน notepad และบันทึกเป็น. vbs แต่เมื่อฉันใช้งานมันให้ข้อผิดพลาดพื้นฐาน Visual?
FernandoSBS

1
บันทึกเป็น. ps1 และเรียกใช้จาก Powershell
Austin T French

ฉันไม่คุ้นเคยกับ PowerShell ฉันจะทำให้เป็นอัตโนมัติใน Task Scheduler ได้อย่างไร
FernandoSBS

คุณควรแบ่งคำถาม 2 ข้อจริงๆ นี่คือเว็บไซต์ QA นอกจากนี้ google ถ้าคุณยังไม่ได้: google.com/ ...
Austin T French

เข้าใจแล้ว โบนัสการใช้ powershell คืออะไร
FernandoSBS

0

มันง่ายกว่าที่จะลองแมปโดยใช้ Windows File explorer หรือใช้คำสั่ง net use อาจใช้งานได้หรือไม่ก็ได้


ถ้ามันพร้อมใช้งานฉันต้องการที่จะเชื่อมต่อโดยอัตโนมัติเมื่อฉันเข้าสู่ระบบ / โปรแกรมรักษาหน้าจอถ้าไม่ได้แล้วฉันต้องการมันจะถูกลบออกจากไดรฟ์ที่แมป ดังนั้นสิ่งที่คุณแนะนำไม่ใช่ตัวเลือก
FernandoSBS

ฉันไม่เข้าใจคุณใช้เน็ตถ้าคำสั่งสำเร็จจะเชื่อมต่อ หากคำสั่งล้มเหลวคำสั่งนั้นจะถูกลบออกจากไดรฟ์ที่แมป ดูเหมือนจะง่ายสำหรับฉัน
mdpc

0

นี่คือรหัสสุดท้าย:

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 

ฉันใช้Test-Path \\192.168.1.1\volume1ตามที่แนะนำเพื่อตรวจสอบว่ามีเส้นทางเครือข่ายหรือไม่และ((New-Object System.IO.DriveInfo("Y:")).DriveType -ne "NoRootDirectory")เพื่อตรวจสอบว่ามีอักษรระบุไดรฟ์อยู่หรือไม่

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