VBS:检查 IP 地址和打开 URL(但仅一次)

Posted

技术标签:

【中文标题】VBS:检查 IP 地址和打开 URL(但仅一次)【英文标题】:VBS: Check IP address and open URL (but only once) 【发布时间】:2011-04-11 07:43:26 【问题描述】:

我正在尝试创建一个 VBScript,它将通过检查其 IPv4 地址(由 DHCP 分配)来检测正在运行的计算机是否连接到我们的 LAN,然后根据它是否打开一个特定的 URL在我们的网络内部或外部。该脚本将主要用于在工作 (10.12.90.0/22) 和家庭 (通常是 192.168/23,但这可能是任何东西) 之间漫游的笔记本电脑上。在这两种情况下,我只需要打开一次正确的 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

【问题讨论】:

【参考方案1】:

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

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  

【讨论】:

以上是关于VBS:检查 IP 地址和打开 URL(但仅一次)的主要内容,如果未能解决你的问题,请参考以下文章

slmgr.vbs是啥文件

意图:删除始终/仅一次按钮

打开网页后 找不到URL怎么办

从字符串中匹配 url 路径和 ip 地址

如何在Swift中检查URL的有效性?

php cookie 和会话变量和 ip 地址