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(但仅一次)的主要内容,如果未能解决你的问题,请参考以下文章