我正在尝试创建一个 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/