Authentication VBS-使用多个NIC映射驱动器的登录脚本

Authentication VBS-使用多个NIC映射驱动器的登录脚本,authentication,vbscript,drive-mapping,Authentication,Vbscript,Drive Mapping,我正在尝试创建一个脚本,以便在登录时根据IP地址或子网映射驱动器。我能找到一个脚本,它在单麦克风上运行良好,但很少有机器有两个NIC,而且它不能与它们一起工作 这里是修改后的脚本 set objNetwork = CreateObject("Wscript.Network") strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colAd

我正在尝试创建一个脚本,以便在登录时根据IP地址或子网映射驱动器。我能找到一个脚本,它在单麦克风上运行良好,但很少有机器有两个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
set objNetwork=CreateObject(“Wscript.Network”)
strComputer=“”
设置objWMIService=GetObject(“winmgmts:\\”&strComputer&“\root\cimv2”)
设置colAdapters=objWMIService.ExecQuery_
(“从Win32_NetworkAdapter配置中选择*,其中IPEnabled=True”)
重拨子网(-1)
对于ColjaAdapter中的每个对象适配器
对于objAdapter.IPAddress中的每个地址
arrOctets=拆分(以“.”号填列)
如果arrOctets(0)”,则
ReDim保留arrSubnets(UBound(arrSubnets)+1)
arrSubnets(UBound(arrSubnets))=arrOctets(0)和“&&arrOctets(1)和”_
&阿罗克特斯(2)
如果结束
下一个
下一个
Set colItems=objWMIService.ExecQuery\u
(“从Win32_LogicalDisk中选择*,其中DeviceID='G:'”)
如果colItems.Count=0,则
strSubnet=arrSubnets(UBound(arrSubnets))
选择案例strSubnet
案例“10.1.1”
objNetwork.MapNetworkDrive“G:”,“\\10.1.1.62\z共享”,真
objNetwork.MapNetworkDrive“F:”,“\\10.1.1.62\zShared2”,True
案例“10.1.20”
objNetwork.MapNetworkDrive“G:”,“\\10.1.20.150\sharedch”,真
objNetwork.MapNetworkDrive“F:”,“\\10.1.20.150\sharedch1”,真
结束选择
如果结束

您使用
子网
,而无需初始化(或调整大小)。此外,您正在尝试回显
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
i=0
对于ColjaAdapter中的每个对象适配器
对于objAdapter.IPAddress中的每个地址
arrOctets=拆分(以“.”号填列)
如果arrOctets(0)”,则
arrcutnets(i)=arrOctets(0)&“&”arrOctets(1)&“&”arrOctets(2)
i=i+1
WScript.Echo子网(i)
如果结束
下一个
下一个
为此:

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
ReDim子网(-1)
对于ColjaAdapter中的每个对象适配器
对于objAdapter.IPAddress中的每个地址
arrOctets=拆分(以“.”号填列)
如果arrOctets(0)”,则
ReDim保留arrSubnets(UBound(arrSubnets)+1)
arrSubnets(UBound(arrSubnets))=arrOctets(0)和“&&arrOctets(1)和”_
&阿罗克特斯(2)
WScript.Echo arrSubnets(UBound(arrSubnets))
如果结束
下一个
下一个

嗯。。。哪个错误?嗨,谢谢你的回复。我得到下面的错误。行:14字符:14错误:类型不匹配:“arrsubnets”代码:800A000DHi,感谢您的回复,但现在我收到一些其他错误。这是我这次使用的脚本。嗨,谢谢你的回复,但现在我得到了一些其他错误。这是我这次使用的脚本。每回显我这样做只是为了调试问题,我不需要回显子网络。这里是错误的url。这里是脚本url@用户2744072请编辑您的问题并添加修改后的脚本,或将其发布到无需启用JavaScript即可查看的地方。您好,很抱歉给您带来不便。docs.google.com也需要JavaScript。为什么你不能更新你的问题?