windows - VBS : Check IP address and open URL (but only once)

标签 windows networking vbscript ip-address

我正在尝试创建一个 VBScript,它将通过检查其 IPv4 地址(由 DHCP 分配)来检测正在运行的计算机是否连接到我们工作的 LAN,然后根据它是否打开特定的 URL在我们的网络内部或外部。该脚本将主要用于在工作 (10.12.90.0/22) 和家庭(通常是 192.168/23,但这实际上可以是任何东西)之间漫游的笔记本电脑上。在这两种情况下,我只需要打开 corect URL 一次,因为几乎总是会有多个网络适配器(有线/无线/蓝牙等)。

下面的脚本在我测试时似乎可以工作,但我不是程序员,我不确定是否有更好的方法来做到这一点。理想情况下,我希望避免因延迟而对服务器执行 ping 操作。

strComputer = "."

strInternal = "http://intranet/"
strExternal = "http://www.mydomain.com/"

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled = True",,48)

For Each objItem in colItems
    strIPAddress = objItem.IPAddress(0)
    arrIPAddress = Split(strIPAddress, ".")

    If (arrIPAddress(0) = "10") And (arrIPAddress(1) = "12") Then
        ipChecked = 1
        Run strInternal
    Else
        If ipChecked = 1 Then
            WScript.Sleep(10)
        Else
            ipChecked = 1
            Run strExternal
        End If
    End If

Next

Sub Run(ByVal sFile)
Dim shell
    Set shell = CreateObject("WScript.Shell")
    shell.Run Chr(34) & sFile & Chr(34), 1, false
    Set shell = Nothing
End Sub

最佳答案

如何检查内部网站是否可用,如果是则加载它,否则加载公共(public)网站?您可以使用这样的函数:

Function UrlExists(xURL)
    On Error Resume Next
    Err.Clear
    Dim objXML

    Set objXML = CreateObject("Microsoft.XMLHTTP")
    objXML.Open "HEAD",xURL,False
    objXML.Send

    If Err.Number <> 0 Or objXML.Status <> 200 Then
        UrlExists = False
    Else
        UrlExists = True
    End If
    Set objXML = Nothing
End Function

然后从您的主脚本中调用它:

strInternal = "http://intranet/default.htm"       
strExternal = "http://www.mydomain.com/"  

If URLExists(strInternal) Then
 Run strInternal
Else
 Run strExternal 
End If  

关于windows - VBS : Check IP address and open URL (but only once),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3694784/

相关文章:

powershell - PSExec:cmd 在 [COMPUTER] 上退出,错误代码为 -196608

excel - 自动打开、更新和保存 Excel 工作簿

javascript - 数据输入后自动刷新 Javascript 表单刷新

encoding - 在 VBScript 中对字符串进行 Base64 编码

c++ - 正确使用GetLongPathName函数

c - scanf_s 读取字符我做错了什么?

ios - 如何将 url 数组发送到另一个 View 并转换为图像?

c - 测量上下文切换时间 C (Windows)

windows - EasyPHP Windows7 错误的 PATH 变量

networking - 托管服务器时如何使用livereload.js?