2013-09-03 4 views
0

IP 주소 또는 서브넷별로 로그온 할 때 드라이브를 매핑하는 스크립트를 만들려고합니다. 하나의 스크립트가 하나의 MIC에서 잘 작동하지만, 2 개의 닉스가있는 기계는 거의 없으므로 작동하지 않습니다.여러 개의 NIC가있는 드라이브를 매핑하는 VBS- 로그인 스크립트

다음은 수정 된 스크립트입니다.

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 
+0

음 ... * * 오류? –

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 아래 오류가 발생합니다. 라인 : 14 문자 : 14 오류 : 형식이 일치 : 'arrsubnets' 코드 : 800A000D – user2744072

+0

https://skydrive.live.com/?mkt=en-US#cid=415FBD1F15F38083&id=415FBD1F15F38083%21201&v=3 – user2744072

답변

1

arrSubnets을 초기화 (또는 크기 조정)하지 않고 사용합니다. 또한 arrSubnets(i)이 울릴 때 arrSubnetIPs(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 
+0

안녕하세요, 답장을 보내 주셔서 감사합니다.하지만 이제 다른 오류가 발생합니다. 다음은이 시간에 사용하는 스크립트입니다. – user2744072

+0

안녕하세요, 답장을 보내 주셔서 감사합니다.하지만 이제 다른 오류가 발생합니다. 다음은이 시간에 사용하는 스크립트입니다. 에코 당 나는 단지 문제를 디버깅하기 위해 그것을하고 있었고, 나는 서브 네트워크를 에코하기를 거부했다. 여기에 오류가있는 URL이 있습니다. https://skydrive.live.com/?mkt=en-US#cid=415FBD1F15F38083&id=415FBD1F15F38083%21202&v=3 \t 여기에 스크립트 URL이 있습니다. https://skydrive.live.com/?mkt=en-US#cid=415FBD1F15F38083&id=415FBD1F15F38083%21203 – user2744072

+0

@ user2744072 질문을 수정하고 수정 된 스크립트를 추가하거나 활성화하지 않고 볼 수있는 곳에 게시하십시오. JavaScript. –