- Offizieller Beitrag
Hi,
nicht dass ihr denkt, ich bastel nur noch Uhren...
Hier 2 UDF's für die Netzwerkadapter-Konfiguration ohne Aufruf von 'netsh'.
_GetNetworkAdapterIPEnabled()
Ermittelt für alle IPEnabled Netzwerkadapter:
- Caption
- IPAddress
- IPSubnet
- DefaultIPGateway
Rückgabe in einem Array.
_SetIP( )
Konfiguriert den mit Caption benannten Adapter:
- IPAddress
- IPSubnet ( Standardvorgabe 255.255.255.0 )
- DefaultIPGateway
- Aktivierung von DHCP wenn nur Caption als Parameter übergeben wird
_GetNetworkAdapterIPEnabled()
Spoiler anzeigen
#include <array.au3>
_ArrayDisplay(_GetNetworkAdapterIPEnabled())
;****************************************************************************************
; Funktion _GetNetworkAdapterIPEnabled()
;
; Beschreibung Ermittelt Netzwerkadapter mit konfigurierter IP
;
; Rückgabe Array Netzwerkadapter
; Array[n][0] Caption
; Array[n][1] IP-Adresse
; Array[n][2] Subnetzmaske
; Array[n][3] Standardgateway
; wird kein IPEnabled Adapter gefunden:
; Return -1 und @error = 1
;
; Erfordernisse #include <array.au3>
;
; Autor BugFix ([email='bugfix@autoit.de'][/email])
;****************************************************************************************
Func _GetNetworkAdapterIPEnabled()
Dim $arAdapter[1], $var
$arAdapter[0] = -1
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$strComputer = "localhost"
$objWMIService = ObjGet("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
$IPConfigSet = $objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
For $IPConfig in $IPConfigSet
For $i=0 to UBound($IPConfig.IPAddress)-1
If $IPConfig.IPAddress($i) <> '0.0.0.0' Then
$settings = $IPConfig.Caption & '|' & _
$IPConfig.IPAddress($i) & '|' & _
$IPConfig.IPSubnet(0) & '|' & _
$IPConfig.DefaultIPGateway(0)
If $arAdapter[0] = -1 Then
$arAdapter[0] = $settings
Else
For $i = 0 To UBound($arAdapter)-1
If $arAdapter[$i] = $settings Then
ExitLoop
Else
_ArrayAdd($arAdapter, $settings)
EndIf
Next
EndIf
EndIf
Next
Next
If $arAdapter[0] = -1 Then
SetError(1)
Return -1
Else
Local $arOut[UBound($arAdapter)][4]
For $i = 0 To UBound($arAdapter)-1
$var = StringSplit($arAdapter[$i], '|')
$arOut[$i][0] = $var[1]
$arOut[$i][1] = $var[2]
$arOut[$i][2] = $var[3]
$arOut[$i][3] = $var[4]
Next
EndIf
Return $arOut
EndFunc ;==>_GetNetworkAdapterIPEnabled
_SetIP( )
Spoiler anzeigen
;****************************************************************************************
; Funktion _SetIP($CAPTION, $IP='0.0.0.0', $GATEWAY='0.0.0.0' [, $SUB="255.255.255.0"])
;
; Beschreibung Konfiguration eines IPEnabled Netzwerkadapters
; Wird nur der Parameter $CAPTION übergeben, wird für diesen Adapter 'DHCP Enabled' gesetzt
;
; Parameter $Caption ermitteln mit _GetNetworkAdapterIPEnabled() o.a. Skript
; $IP einzustellende IP
; $GATEWAY Standardgateway
; optional $SUB Subnetzmaske (default "255.255.255.0")
;
; Rückgabe 0 IP und Gateway (oder DHCP) erfolgreich gesetzt
; 1 IP-Adresse konnte nicht gesetzt werden @error 1
; 2 Gateway konnte nicht gesetzt werden @error 1
; 3 IP-Adresse und Gateway konnten nicht gesetzt werden @error 1
; 4 Aktivierung DHCP fehlgeschlagen @error 1
;
;
; Autor BugFix ([email='bugfix@autoit.de'][/email])
;****************************************************************************************
Func _SetIP($CAPTION, $IP='0.0.0.0', $GATEWAY='0.0.0.0', $SUB="255.255.255.0")
Local $err = 0, $arIPAddress[1], $arSubnetMask[1], $arGateway[1], $arGatewayMetric[1]
$strComputer = "."
$objWMIService = ObjGet("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
$colNetAdapters = $objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
$arIPAddress[0] = $IP
$arSubnetMask[0] = $SUB
$arGateway[0] = $GATEWAY
$arGatewayMetric[0] = 1
For $objNetAdapter In $colNetAdapters
If $objNetAdapter.Caption = $CAPTION Then
If $IP <> '0.0.0.0' Then
$errEnable = $objNetAdapter.EnableStatic($arIPAddress, $arSubnetMask)
$errGateways = $objNetAdapter.SetGateways($arGateway, $arGatewaymetric)
If $errEnable <> 0 Then $err += 1
If $errGateways <> 0 Then $err += 2
Else
$errEnable = $objNetAdapter.EnableDHCP()
If $errEnable <> 0 Then $err += 4
EndIf
ExitLoop
EndIf
Next
If $err > 0 Then SetError(1)
Return $err
EndFunc ;==>_SetIP()