Konfiguration Netzwerkadapter

    • Offizieller Beitrag

    Hi,
    nicht dass ihr denkt, ich bastel nur noch Uhren... :D

    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
    [autoit]

    #include <array.au3>
    _ArrayDisplay(_GetNetworkAdapterIPEnabled())

    [/autoit] [autoit][/autoit] [autoit]

    ;****************************************************************************************
    ; 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

    [/autoit]


    _SetIP( )

    Spoiler anzeigen
    [autoit]

    ;****************************************************************************************
    ; 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()

    [/autoit]