I am looking to run a script to see who has DHCP turned on or who has a Static ip address. I found some code on the kixtart forum that looked like it would do the trick but i keep getting array errors. It would be nice if i could get mac address as well. Looking through the code it seems like it should work but i cant figure out where its all going bad.

 Code:
Break On
Dim $SO,$Pause
$SO=SetOption('Explicit','On')
$SO=SetOption('NoVarsInStrings','On')
$SO=SetOption('WrapAtEOL','On')

Dim $Array, $X, $Y
; Declare the COMPUTER var if not defined on the command line
If Not IsDeclared($COMPUTER) 
 Global $COMPUTER
EndIf
$Array = NicInfo($COMPUTER)
If UBound($Array) < 0 
 @SERROR ?
Else
  UBound($Array) ' elements returned.' ?
  For $X = 0 to UBound($Array)
    For $Y = 0 to UBound($Array[$X])
      $y '. ' $Array[$X][$Y] ?
    Next  
Next
EndIf

;;======================================================================
;;
;;FUNCTION       NicInfo()
;;
;;ACTION         Returns an array NIC information
;;
;;AUTHOR         Glenn Barnas / NTDoc
;;
;;VERSION        1.0
;;
;;DATE CREATED   2005/03/17
;;
;;DATE MODIFIED  
;;
;;SYNTAX         NicInfo(target)
;;
;;PARAMETERS     target		- name of sysetm to query
;;
;;REMARKS        Array of arrays is returned - a collection of arrays for each physical or virtual NIC 
;;               WAN/RAS, and Miniport drivers are ignored
;;
;;RETURNS        Array of Arrays
;;
;;DEPENDENCIES   none
;;
;;TESTED WITH    NT4, W2K, WXP
;;
;;EXAMPLES       $Array = NicInfo($COMPUTER)
;;
;;               If UBound($Array) < 0
;;                 @SERROR ?
;;               Else
;;               
;;                 UBound($Array) ' elements returned.' ?
;;               
;;                 For $X = 0 to UBound($Array)
;;                   For $Y = 0 to UBound($Array[$X])
;;                     $y '. ' $Array[$X][$Y] ?
;;                   Next
;;                 Next
;;               EndIf
;;             
;
Function NicInfo(OPTIONAL $Target)
  Dim $Regkey, $SubKeyCounter, $NicArray, $CurrentSubKey, $Index
  Dim $Name, $Key, $WorkRegKey, $SubKey

  ; Insure $Target uses the format "\\target\" if specified
  $Target =  IIf($Target <> '', '\\' + Join(Split($Target, '\'), '', 3) + '\', '')

  ; Define the primary registry key  $RegKey = $Target + 'HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}'
  ; init the enumeration index and array index
  $SubKeyCounter = 0
  $Index = 0

  ; Enumerate all of the keys that are LAN adapters
  $CurrentSubKey = EnumKey($RegKey, $SubKeyCounter)
  If @ERROR
    Exit @ERROR							; exit now if can't read registry!
  EndIf

  $CurrentSubKey = EnumKey($RegKey, $SubKeyCounter)
  While @ERROR = 0
    $Key = ReadValue($RegKey + '\' + $CurrentSubKey, 'Characteristics')
    If $Key = 132 Or $Key = 32769				; physical nic or virtual team
      ReDim Preserve $NicArray[$Index]				; increase the array size
      $NicArray[$Index] = $CurrentSubKey			; add the subkey to the array
      $Index = $Index + 1					; increment the array index
    EndIf
    $SubKeyCounter = $SubKeyCounter + 1				; increment the enumeration index
    $CurrentSubKey = EnumKey($RegKey, $SubKeyCounter)		; get the next key
  Loop

  ; Have an array of all the NIC subkeys now... Gather some appropriate data on each
Dim $NicData[UBound($NicArray)]

  $Index = 0
  Dim $WorkArray[14]
  For Each $SubKey In $NicArray
    ; Start by determining the Speed/Duplex value name
    $SubKeyCounter = 0
    $Name = ''
    $WorkRegKey = $RegKey + '\' + $SubKey + '\Ndi\Params'

    ; Enumerate all of the subkeys to locate the Speed/Duplex value name
    $CurrentSubKey = EnumKey($WorkRegKey, $SubKeyCounter)
    While @ERROR = 0 And $Name = ''
      $Key = ReadValue($WorkRegKey + '\' + $CurrentSubKey, 'ParamDesc')
      If InStr($Key, 'Duplex') Or InStr($Key, 'Connection Type')
        $Name = $CurrentSubKey					; Save the Key Name
      EndIf
      $SubKeyCounter = $SubKeyCounter + 1				; increment the enumeration index
      $CurrentSubKey = EnumKey($WorkRegKey, $SubKeyCounter)	; get the next key
    Loop	; enumerate subkeys

    ; Collect the data for this adapter
    $WorkArray[0] = ReadValue($RegKey + '\' + $SubKey, 'DriverDesc')			; Adapter Description        
$WorkArray[1] = ReadValue($RegKey + '\' + $SubKey, 'ProviderName')			; Manufacturer
    $WorkArray[2] = ReadValue($RegKey + '\' + $SubKey, 'NetCfgInstanceId')		; NIC GUID
    $WorkArray[3] = ReadValue($RegKey + '\' + $SubKey, $Name)				; Speed/Duplex value
    $WorkArray[4] = ReadValue($WorkRegKey + '\' + $Name + '\Enum', $WorkArray[3])	; Speed/Duplex text
    $WorkArray[5] = ReadValue($RegKey + '\' + $SubKey, 'DriverVersion')		; Driver Version

    $WorkRegKey = $Target + 'HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\' + $WorkArray[2]        
$WorkArray[6] = ReadValue($WorkRegKey, 'EnableDHCP')				; DHCP boolean
    $Key = IIf($WorkArray[6] = 1, 'Dhcp', '')
    $WorkArray[7] = ReadStringValue($WorkRegKey, $Key + 'IPAddress') + ',' +
                    ReadStringValue($WorkRegKey, $Key + 'SubnetMask') + ',' +
                    ReadStringValue($WorkRegKey, $Key + 'DefaultGateway')		; IP settings
    $WorkArray[8] = ReadStringValue($WorkRegKey, $Key + 'Domain')			; Domain Name
    $WorkArray[9] = ReadStringValue($WorkRegKey, $Key + 'NameServer')			; DNS Server list

    ; handle an undefined speed/duplex setting
    If $WorkArray[4] = ''
      $WorkArray[4] = 'Undefined'
    EndIf	; undefined speed

    ; Special values for Compaq/HP Team
    If ReadValue($RegKey + '\' + $SubKey, 'Characteristics') = 32769
      $WorkArray[10] = 'HPTEAM'								; special flag
      $WorkArray[11] = ReadValue($RegKey + '\' + $SubKey, 'TeamAdapters')		; # of adapters in team      $WorkArray[12] = ReadValue($RegKey + '\' + $SubKey, 'TeamInstances')		; ID of adapters in team
    EndIf

    $NicData[$Index] = $WorkArray
    $Index = $Index + 1
    
ReDim $WorkArray[14]

  Next	; CurrentSubKey

  ; Return the array of arrays
  ReDim Preserve $NicData[$Index - 1]
  $NicInfo = $NicData

EndFunction   

; Read a String_Multi_SZ val and return a space-delimited string
Function ReadStringValue($Key, $Val)
  $ReadStringValue = Trim(Join(Split(ReadValue($Key, $Val), '|'), ' '))
EndFunction



ERROR:
 Code:
ERROR : array reference out of bounds!
Script: c:\test\dhcp\dhcp.kix
Line  : 98


When i tried to do a ? $NicData or ? $NicArray i still got an error without it showing me what information was in them. i put them in around line 97, right above where the error was happing.
_________________________
Where ever you go, there you are.