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,csvThe 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% REM 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 REM 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 REM 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 REM Retrieve NICs enabledDHCP TCP/IP settings. for /f "tokens=1*" %%k in ('REGfree -lv "\\%rp1%%nic2%%RegValue%%nic4%%nic5E%"') do set DHCP=%%l REM Bypassed DHCP enabled (and not found) NICs. if "%DHCP%" EQU "1" goto loop if "%DHCP:~0,4%" EQU "key " goto loop REM 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
0 comments
Hide comments