尝试编写将在 WinPE 中运行的脚本,该脚本实质上获取 localhost 的 IP 地址并根据 IP 范围选择操作。
在 Windows 中,脚本运行完美。但是,在 WinPE 中,我收到以下错误:
script.vbs(1,1) Microsoft VBScript 运行时错误:下标超出范围
Google-fu 告诉我这与我的数组超出范围有关。在这里,我以为我有一个不错的理解,但显然不是。
在 Windows 上按原样运行的代码:
Option Explicit
Dim sIP, sHostname,sPingBat
Dim aIP
Dim iOct1, iOct2, iOct3, iOct4, iReturn
Dim oWMIService, oCmd, oAdapter
Dim cAdapters
iReturn = 999
sHostname = "."
Set oWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & sHostname & "\root\cimv2")
Set cAdapters = oWMIService.ExecQuery("Select IPAddress from Win32_NetworkAdapterConfiguration Where IPEnabled = True")
Set oCmd = CreateObject("Wscript.Shell")
For Each oAdapter in cAdapters
If Not IsNull(oAdapter.IPAddress) Then
sIP = Trim(oAdapter.IPAddress(0))
Else
iReturn = 404
WScript.Quit iReturn
End If
Next
sIP = CStr(sIP)
aIP = Split(sIP, ".")
iOct1 = CInt(aIP(0))
iOct2 = CInt(aIP(1))
iOct3 = CInt(aIP(2))
iOct4 = CInt(aIP(3))
现在,如果我将 aIP 数组的声明更改为以下任一:
aIP()
aIP(4)
并运行
aIP = Split(sIP, ".")
我明白了
script.vbs(26, 1) Microsoft VBScript 运行时错误:类型不匹配
将数组分配/分割线更改为
aIP() = Split(sIP,".")
结果是
script.vbs(26, 1) Microsoft VBScript 运行时错误:下标超出范围
所以我显然做错了什么。
我的原始错误消息也完全有可能与我的数组范围完全无关,而 WinPE 只是不喜欢我的脚本(在这种情况下,如果有人有任何指针,将不胜感激)
目前,我正在安装我的 wim 以获取安装包,以确保从 ADK 安装 WMI 和脚本包。