2016-03-25 9 views
0

次のスクリプトを使用してターゲットマシンのIPアドレスを取得し、最後のオクテットを調整して同じネットワーク上の別のPCにドライブを割り当てます。スクリプトが間違ったNIC IPの詳細を取得しています

これは私がそれを見てもらうことができますどのようにうまく動作しますが、(内部)私は今(プライマリおよび内部という名前の)2つのNICを持つマシン上でこれを実行する必要があり、スクリプトが間違ったNICのIPを拾っ

他のNICのIPで?

Dim HostIPAddress : HostIPAddress = "" 
Dim objWMIService : Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") 
Dim colAdapters : Set colAdapters = objWMIService.ExecQuery("Select IPAddress from Win32_NetworkAdapterConfiguration Where IPEnabled = True") 
Dim objAdapter 
For Each objAdapter In colAdapters 
    If Not IsNull(objAdapter.IPAddress) Then HostIPAddress = Trim(objAdapter.IPAddress(0)) 
    Exit For 
Next 

strIP = HostIPAddress 
i = InStrRev(strIP, ".") 
strIP = Left(strIP, i) & "15" 

Dim objNetwork 
Dim strDriveLetter, strRemotePath, strUser, strPassword, strProfile 

strDriveLetter = "Z:" 
strRemotePath = "\\"&strIP&"\c$" 
strUser = "User" 
strPassword = "Password!" 
strProfile = "false" 

Set objNetwork = WScript.CreateObject("WScript.Network") 
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath, _ 
    strProfile, strUser, strPassword 

答えて

1

Win32_NetworkAdatperConfigurationクラスから正しいアダプタを選択するためのそのIDを使用し、その後、Win32_NetworkAdapterクラス経由で「プライマリ」と命名されたNICのデバイスIDを取得します。

nicName = "primary" 

Set wmi = GetObject("winmgmts://./root/cimv2") 

deviceQry = "SELECT * FROM Win32_NetworkAdapter " & _ 
      "WHERE NetConnectionId = '" & nicName & "'" 
For Each adapter In wmi.ExecQuery(deviceQry) 
    addressQry = "SELECT * FROM Win32_NetworkAdapterConfiguration " & _ 
       "WHERE Index = " & adapter.DeviceId 
    For Each config In wmi.ExecQuery(addressQry) 
    If Not IsNull(config.IPAddress) Then 
     HostIPAddress = Trim(config.IPAddress(0)) 
     Exit For 
    End If 
    Next 
Next 
関連する問題