脚本 - 如何检查网络路径是否可用,然后映射它


12

我想要一个屏幕保护程序/登录脚本,它检查网络路径是否可用,然后将其映射到一个单元。如果它不可用,则断开连接/不连接。

网络路径是\ 192.168.1.1 \ drive1

此外,我需要使用用户名/密码连接到该路径。

Answers:


13

你可以使用 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=

好吧,我只是在记事本中粘贴并保存为.vbs但是当我运行它的任务时它会给出Visual Basic错误吗?
FernandoSBS

1
该命令是批处理命令 - 它应该可以在任何标准批处理文件中运行。
Geoff

C:\ Windows>如果存在\\ 192.168.1.1 \ volume1(net使用y:\\ 192.168.1.1 \ volume1)e lse(net use / delete 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}

好吧,我只是在记事本中粘贴并保存为.vbs但是当我运行它的任务时它会给出Visual Basic错误吗?
FernandoSBS

1
将其另存为.ps1并从Powershell运行它。
Austin T French

我不熟悉powershell,如何在Task Scheduler中自动化它?
FernandoSBS

你应该真正分开这2个问题。这是一个QA网站。此外,谷歌它,如果你还没有: google.com/...
Austin T French

好的,我知道了。使用PowerShell的好处是什么?
FernandoSBS

0

尝试使用Windows文件浏览器或使用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") 检查驱动器号是否存在。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.