VBS- скрипт входа в систему для подключения диска с несколькими сетевыми картами
Я пытаюсь создать сценарий для сопоставления диска при входе в систему по IP-адресу или подсети. Мне удалось найти один скрипт, который хорошо работает на одном MIC, но есть несколько машин с двумя NIC, и он не работает с ними.
Вот модифицированный скрипт.
set objNetwork = CreateObject("Wscript.Network")
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colAdapters = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled=True")
ReDim arrSubnets(-1)
For Each objAdapter in colAdapters
For Each strAddress in objAdapter.IPAddress
arrOctets = Split(strAddress, ".")
If arrOctets(0) <> "" Then
ReDim Preserve arrSubnets(UBound(arrSubnets)+1)
arrSubnets(UBound(arrSubnets)) = arrOctets(0) & "." & arrOctets(1) & "." _
& arrOctets(2)
End If
Next
Next
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_LogicalDisk Where DeviceID = 'G:'")
If colItems.Count = 0 Then
strSubnet = arrSubnets(UBound(arrSubnets))
Select Case strSubnet
Case "10.1.1"
objNetwork.MapNetworkDrive "G:", "\\10.1.1.62\zShared",True
objNetwork.MapNetworkDrive "F:", "\\10.1.1.62\zShared2",True
Case "10.1.20"
objNetwork.MapNetworkDrive "G:", "\\10.1.20.150\sharedch",True
objNetwork.MapNetworkDrive "F:", "\\10.1.20.150\sharedch1",True
End Select
End If
1 ответ
Ты используешь arrSubnets
без инициализации (или изменения размера). Кроме того, вы пытаетесь эхо arrSubnetIPs(i)
когда вы должны повторять arrSubnets(i)
, Изменить это:
i = 0
For Each objAdapter in colAdapters
For Each strAddress in objAdapter.IPAddress
arrOctets = Split(strAddress, ".")
If arrOctets(0) <> "" Then
arrSubnets(i) = arrOctets(0) & "." & arrOctets(1) & "." & arrOctets(2)
i = i + 1
WScript.Echo arrSubnetIPs(i)
End If
Next
Next
в это:
ReDim arrSubnets(-1)
For Each objAdapter in colAdapters
For Each strAddress in objAdapter.IPAddress
arrOctets = Split(strAddress, ".")
If arrOctets(0) <> "" Then
ReDim Preserve arrSubnets(UBound(arrSubnets)+1)
arrSubnets(UBound(arrSubnets)) = arrOctets(0) & "." & arrOctets(1) & "." _
& arrOctets(2)
WScript.Echo arrSubnets(UBound(arrSubnets))
End If
Next
Next