In this script, I use NETDOM, from the Windows 2000 Support folder on the CD-ROM and the freeware REG from tip 0170.

The script must run on any Windows 2000 computer, but the 'PDC' might be faster. The domain can be Windows NT, Windows 2000, or Mixed.

The CSV file will be similar to:

Begin,the,csv
JSI001.JSIINC.ORG,\{F651A57B-7286-42BF-A0D4-06C386EC5B77\},192.168.0.1
JSI005,\{33CBD362-FDA7-4E37-835A-C6929633A956\},192.168.0.10
End,the,csv
The script, FixedIpNICs.bat, requires 1 parameter, the output file. FixedIpNICs.bat contains:
@echo off
if \{%1\} EQU \{\} goto syntax
setlocal
set outfile=%1
if exist %outfile% del /q %outfile%
@echo Begin,the,csv>>%outfile%
<b>REM</b> Set registry path elements.
set rp2=\machine\Software\Microsoft\Windows NT\CurrentVersion\Networkcardsset rp4=\ServiceName
set nic2=\machine\System\CurrentControlSet\Servicesset nic4=\Parameters\TcpIPset nic5E=EnableDHCP
set nic5IP=IPAddress
For /f "Skip=1 Tokens=1" %%i in ('netdom query /domain PDC') do call :computer "%%i"
For /f "Skip=1 Tokens=1" %%i in ('netdom query /domain DC') do call :computer "%%i"
For /f "Skip=1 Tokens=1" %%i in ('netdom query /domain SERVER') do call :computer "%%i"
For /f "Skip=1 Tokens=1" %%i in ('netdom query /domain WORKSTATION') do call :computer "%%i"
@echo End,the,csv>>%outfile%
endlocal
goto end
:syntax
@echo Syntax: FixedIpNICs outputfile
goto end
:computer
set rp1=%1
set rp1=%rp1:"=%
if "%rp1%" EQU "The" goto end
if "%rp1%" EQU "Directory" goto end
<b>REM</b> Set Key and notfound counters, initialize duplicate IP switch.
set /a rp3=0
set /a cnt=0
set pIP=
:loop
set /a cnt=%cnt% + 1
set /a rp3=%rp3% + 1
if %cnt% GTR 9 goto end
<b>REM</b> Retrieve nth NIC.
for /f "tokens=1*" %%j in ('REGfree -lv "\\%rp1%%rp2%%rp3%%rp4%"') do set RegValue=%%k
if "%RegValue:~0,4%" EQU "key " goto loop
set /a cnt=0
<b>REM</b> Retrieve NICs enabledDHCP TCP/IP settings.
for /f "tokens=1*" %%k in ('REGfree -lv "\\%rp1%%nic2%%RegValue%%nic4%%nic5E%"') do set DHCP=%%l
<b>REM</b> Bypassed DHCP enabled (and not found) NICs.
if "%DHCP%" EQU "1" goto loop
if "%DHCP:~0,4%" EQU "key " goto loop
<b>REM</b> Retrieve nth IP address (REG_MULTI_SZ data type).
for /f "tokens=1*" %%k in ('REGfree -lv "\\%rp1%%nic2%%RegValue%%nic4%%nic5IP%"') do call :ipa "%%l"
goto loop
:ipa
set IP=%1
if %ip% EQU "" goto end
set IP=%IP:"=%
if "%IP:~0,4%" EQU "key " goto end
if "%IP:~0,7%" EQU "0.0.0.0" goto end
if "%IP%" EQU "%pIP%" goto end
@echo %rp1%,%RegValue%,%IP%>>%outfile%
set pIP=%IP%
:end