Fehler im Code ???

  • Hi Comunity


    ich habe mal so im archiv gestöber und bin auf diesen skript getoßen

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

    #include <array.au3> ; wird nur für _ArrayDisplay benötigt
    Global $networkadapter [1] [2]
    _GetNetworkadapterInf ()
    _ArrayDisplay ($networkadapter)

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

    ;Auslesen der Netzwerkadapter:
    ; Selbstbestimmter Name
    ; int. Beschreibung
    ; IP Adresse
    Func _GetNetworkadapterInf ()
    $x = 0
    $strComputer = "Localhost"
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colComputers = $objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter")
    For $objItem In $colItems
    $networkadapter [$x] [0] = $objitem.Name
    $networkadapter [$x] [1] = $objItem.MACAddress
    $x += 1
    Redim $networkadapter [$x + 1] [2]
    Next
    EndFunc

    [/autoit]

    normalerweise sollte im 3 colum die ip stehen aber da ist nichts

    kann mir vieleicht einer helfen

    gruß Michael

  • Moin!


    Kleine liste! ;)

    Spoiler anzeigen
    [autoit]

    .AdapterType
    .AdapterTypeId
    .AutoSense
    .Availability
    .Caption
    .ConfigManagerErrorCode
    .ConfigManagerUserConfig
    .CreationClassName
    .Description
    .DeviceID
    .ErrorCleared
    .ErrorDescription
    .Index
    .InstallDate
    .Installed
    .LastErrorCode
    .MACAddress
    .Manufacturer
    .MaxNumberControlled
    .MaxSpeed
    .Name
    .NetConnectionID
    .NetConnectionStatus
    .NetworkAddresses
    .PermanentAddress
    .PNPDeviceID
    .PowerManagementCapabilities
    .PowerManagementSupported
    .ProductName
    .ServiceName
    .Speed
    .Status
    .StatusInfo
    .SystemCreationClassName
    .SystemName
    .TimeOfLastReset

    [/autoit]

    Edit: Die stelle kannst du streichen!

    [autoit]

    $colComputers = $objWMIService.ExecQuery("Select * from Win32_ComputerSystem")

    [/autoit]

    Netzwerknamen Mac Ip liest du am einfachsten über cmd ( ipconfig /all ) aus!
    LG Kleiner

    2 Mal editiert, zuletzt von OstseeBit (5. Dezember 2009 um 13:21)

    • Offizieller Beitrag

    Dieses Script funktioniert sowohl unter XP als auch unter Win7 64Bit:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    $iTimer = TimerInit()
    $aAdapter = _Win32NetworkAdapter()
    ConsoleWrite('Fehler: ' & @error & @CR & 'Zeit: ' & Int(TimerDiff($iTimer)) & ' ms' & @CR)
    _ArrayDisplay($aAdapter)

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

    Func _Win32NetworkAdapter($strComputer = 'Localhost')
    Local $aReturn[1][12] = [[ _
    'Hersteller:', 'Name:', 'Adapter-Typ:', 'Kennung:', _
    'MAC-Adresse:', 'Adresstyp:', 'DHCP-Server:', 'IP erhalten:', _
    'IP läuft ab:', 'IP-Adresse:', 'Subnetzmaske:', 'Standardgateway:']]
    Local $x = 0, $objWMIService, $colItems
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\')
    If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapter WHERE Netconnectionstatus = 2', 'WQL', 0x30)
    If Not IsObj($colItems) Then Return SetError(2, 0, 0)
    For $objItem In $colItems
    $x += 1
    ReDim $aReturn[$x + 1][12]
    $aReturn[$x][0] = $objItem.Manufacturer
    $aReturn[$x][1] = $objItem.Name
    $aReturn[$x][2] = $objItem.AdapterType
    $aReturn[$x][3] = $objItem.NetConnectionID
    $aReturn[$x][4] = $objItem.MACAddress
    $colItems2 = $objWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration', 'WQL', 0x30)
    If IsObj($colItems2) Then
    For $objItem2 In $colItems2
    If $objItem.Caption = $objItem2.Caption Then
    If $objItem2.IPEnabled = -1 Then
    If $objItem2.DHCPEnabled = -1 Then
    $aReturn[$x][5] = 'von DHCP zugewiesen'
    $aReturn[$x][6] = $objItem2.DHCPServer
    $aReturn[$x][7] = _WMIDateStringToDate($objItem2.DHCPLeaseObtained)
    $aReturn[$x][8] = _WMIDateStringToDate($objItem2.DHCPLeaseExpires)
    Else
    $aReturn[$x][5] = 'Manuell konfiguriert'
    EndIf
    $aReturn[$x][9] = $objItem2.IPAddress(0)
    $aReturn[$x][10] = $objItem2.IPSubnet(0)
    $aReturn[$x][11] = $objItem2.DefaultIPGateway(0)
    EndIf
    EndIf
    Next
    EndIf
    Next
    Return $aReturn
    EndFunc ;==>_Win32NetworkAdapter

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

    Func _WMIDateStringToDate($dtmDate)
    Return (StringMid($dtmDate, 5, 2) & '/' & _
    StringMid($dtmDate, 7, 2) & '/' & StringLeft($dtmDate, 4) _
    & ' ' & StringMid($dtmDate, 9, 2) & ':' & StringMid($dtmDate, 11, 2) & ':' & StringMid($dtmDate, 13, 2))
    EndFunc ;==>_WMIDateStringToDate

    [/autoit]
    • Offizieller Beitrag

    Ich habe lediglich zwei WMI-Abfragen kombiniert. Habe ich so ähnlich schon in meinem Computer-Info verwendet. Hier jetzt aber als Funktion.

    Problem habe ich noch mit der Angabe des Computers ($strComputer). Wenn man also die Informationen von einem anderen Computer im Netzwerk haben will.
    Die Funktion bricht dann mit @error = 1 ab (das Objekt $objWMIService wird nicht erstellt). Vermutlich wegen fehlender Zugriffsrechte, aber wo kann man die angeben?