lordshelmchen
Goto Top

2 IPs auf einer Netzwerkkarte mit vbscript eintragen

Moin Moin,

ich sitze hier gerade am Problem, das ich mittels vbscript einer Netzwerkkarte zwei IPs zuweisen möchte. Eine IP bekommt man ja einfach so hin:

strComputer = "."  
Set objWMIService = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  

Set colNetAdapters = objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")  

strIPAddress = Array("192.168.1.141")  
strSubnetMask = Array("255.255.255.0")  
strGateway = Array("192.168.1.100")  
strGatewayMetric = Array(1)
 
For Each objNetAdapter in colNetAdapters
    errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
    errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
    If errEnable = 0 Then
        WScript.Echo "The IP address has been changed."  
    Else
        WScript.Echo "The IP address could not be changed."  
    End If
Next

a) Nur wie bekomme ich jetzt die zweite da noch rein?

b) Wie kann ich die zweite wieder löschen (die erste soll aber bestehen bleiben?


Hintergrund:
Ich schreibe gerade ein KFall Script, welches diverse Dinge auf einem Server erledigt, dazu gehört auch die Änderung der Netzwerkkonfiguration.


Grüße
LordShelmchen

Content-ID: 82944

Url: https://administrator.de/contentid/82944

Ausgedruckt am: 22.11.2024 um 19:11 Uhr

bastla
bastla 12.03.2008 um 14:33:47 Uhr
Goto Top
Hallo LordShelmchen!

Zu a)
Es hat natürlich einen Grund, warum die jeweiligen Einstellungen als "Array" zu übergeben sind, daher:
strComputer = "."  
Set objWMIService = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  

Set colNetAdapters = objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")  

strIPAddress = Array("192.168.1.141", "192.168.0.41")  
strSubnetMask = Array("255.255.255.0", "255.255.255.0")  
strGateway = Array("192.168.1.100", "192.168.0.1")  
strGatewayMetric = Array(1, 5)
 
For Each objNetAdapter in colNetAdapters
    errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
    errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
    If errEnable = 0 Then
        WScript.Echo "The IP address has been changed."  
    Else
        WScript.Echo "The IP address could not be changed."  
    End If
Next

Zu b)
strComputer = "."  
Set objWMIService = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  

Set colNetAdapters = objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")  
 
For Each objNetAdapter in colNetAdapters
    strIPAddressCurrent = objNetAdapter.IPAddress
    strSubnetMaskCurrent = objNetAdapter.IPSubnet
    strGatewayCurrent = objNetAdapter.DefaultIPGateway
    strGatewayMetricCurrent = objNetAdapter.GatewayCostMetric
    
    strIPAddress = Array(strIPAddressCurrent(0))
    strSubnetMask = Array(strSubnetMaskCurrent(0))
    strGateway = Array(strGatewayCurrent(0))
    strGatewayMetric = Array(strGatewayMetricCurrent(0))

    errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
    errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
    If errEnable = 0 Then
        WScript.Echo "The IP address has been changed."  
    Else
        WScript.Echo "The IP address could not be changed."  
    End If
Next
Hier werden zunächst die Einstellungen in Arrays ausgelesen und nur das erste Element wieder zurückgeschrieben. Zu ergänzen wären noch jeweils Sicherheitsabfragen der Art
If IsNull(objNetAdapter.IPAddress) Then
    WScript.Echo "Keine IP-Adresse gefunden"  
    'weitere Vorgangsweise erfragen oder hier festlegen  
Else
    strIPAddressCurrent = objNetAdapter.IPAddress
    strIPAddress = Array(strIPAddressCurrent(0))     
End If

Grüße
bastla
LordShelmchen
LordShelmchen 12.03.2008 um 14:37:42 Uhr
Goto Top
Vielen lieben Dank!

So funktioniert es.


Grüße
LordShelmchen