Useful DNS, DHCP and WINS command-line operations
The commands below are a subset of the complete command list found in Useful command-lines, and are command-line operations for core network services – DNS, WINS and DHCP. Most of these commands are queries, useful for once-off or repeated information gathering for reporting, trending, troubleshooting or diagnostics.
Each command-line can be copied and pasted at the command prompt, if you use a batch file you'll need to reference variables with double-percent (%%).
DNS command-line operations
Query DNS forest-wide partition replica
dsquery * "DC=ForestDNSZones,dc=forestRootDomain
Add a CNAME record to DNS
dnscmd %server% /recordadd %zone% %AliasName% CNAME %HostnameAliasing%
Query zone resource records on a Microsoft DNS server
wmic /namespace:rootmicrosoftdns /node:%server% path MicrosoftDNS_ResourceRecord WHERE ContainerName='%zone_name%'
nslookup with debug information
nslookup -debug %IP%
DSQuery authorised DHCP Servers
Dsquery * "cn=NetServices,cn=Services,cn=Configuration, DC=forestRootDomain" -attr dhcpServers
Enumerate all records from a DNS zone
dnscmd /enumrecords @ /additional /continue > DNS_all.txt
Lookup SRV records from DNS
nslookup -type=srv _ldap._tcp.dc._msdcs.{domainRoot}
DNS Information
for /f %i in ('dsquery server -domain %userdnsdomain% -o rdn') do dnscmd %i /info
DNS Zone Detailed information
dnscmd /zoneinfo %userdnsdomain%
DNS Zones in AD
for /f %i in ('dsquery server -o rdn') do Dsquery * -s %i domainroot -filter (objectCategory=dnsZone)
Enumerate DNS Server Zones
for /f %i in ('dsquery server -o rdn') do dnscmd %i /enumzones
Print DNS Zones
dnscmd DNSServer /zoneprint DNSZone
Add a host record in DNS
dnscmd %dnsserver% /recordadd %zone% %relative_name% A %ip%
Find aging records from an enumerated zone
find /i "aging:" DNS_all.txt > DNS_aging.txt
DNS Scavenging check, based on the output of aging records from dnscmd.exe
cscript DNSScavengeTest.wsf /f:DNS_aging.txt
Query DNS objects from the directory
dsquery * DC=,CN=MicrosoftDNS,cn=System,dc=
Start DNS scavenging
dnsmd /startscavenging
Delete a host record from DNS
dnscmd %server% /recorddelete %zone% @ A %IP%
Determine the DNS suffix search list set through policy for a computer
reg query "%Computer%HKEY_LOCAL_MACHINEsoftwarepoliciesmicrosoftWindows NTDNSClient" /v SearchList
Query for the zones hosted on a Microsoft DNS server
wmic /namespace:rootmicrosoftdns /node:%server% path MicrosoftDNS_Zone
Find DNS Forwarder information from dnscmd output
for %b in (DNS*.txt) do @for /f "skip=2 delims=[]" %i in ('"find /i /N "Forwarders:" %b"') do @for /f "skip=2 delims=[]" %m in ('"find /i /N "Command completed successfully." %b"') do @for /f %p in ('set /a %m-%i') do echo tail -%p %b
List primary reverse lookup zones from a DNS server
dnscmd %server% /EnumZones /secondary /reverse
List allowed secondary servers for the specified zone
dnscmd %server /zoneinfo %ip%.in-addr.arpa SecondaryServers
DHCP command-line operations
Netsh authorised DHCP Servers
netsh dhcp show server
DHCP server information
netsh dhcp server DHCP_SERVER show all
DHCP server dump
netsh dhcp server DHCP_SERVER dump > dhcp.txt
Last 50 leases on DHCP servers
for /f %i in (DHCPServers.txt) do echo %i && tail -50 %ic$WINNTsystem32dhcpDhcpSrvLog.Tue
Active DHCP leases
For /f %i in (DHCPServers.txt) do for /f “delims=- ” %j in ('"netsh dhcp server %i show scope find /i "active""') do netsh dhcp server %i scope %j show clientsv5 >> DHCPClients_%i.txt
DHCP clients from all servers
Find /i “255.” DHCPClients_*.txt find /i “255.” > DHCPClientsAll.txt
DHCP Server Active Scope Info
For /f %i in (DHCPServers.txt) do netsh dhcp server %i show scope find /i "active" >> DHCPInfo_%i.txt
Find Subnets from DHCP clients
FindSubnets.bat 'Output from Active DHCP leases'
Resolve DHCP clients hostnames
for /f "tokens=1,2,3 delims=," %i in (Output from 'Find Subnets from DHCP clients') do @for /f "tokens=2 delims=: " %m in ('"nslookup %j find /i "Name:""') do echo %m,%j,%k,%i
Find two online PCs per subnet
Echo. > TwoClientsPerSubnet.txt & for /f "tokens=1,2,3,4 delims=, " %i in ('"find /i "pc" 'Output from Resolve DHCP clients hostnames'"') do for /f "tokens=3 skip=1 delims=: " %m in ('"Find /i /c "%l" TwoClientsPerSubnet.txt"') do If %m LEQ 1 for /f %p in ('"ping -n 1 %i find /i /c "(0% loss""') do If %p==1 Echo %i,%j,%k,%l >> TwoClientsPerSubnet.txt
Find unique Subnets
for /f "delims=" %i in (Output from FindSubnets) do @Find /i "%i" UniqueSubnets.txt 1>nul 2>nul & @if ErrorLevel 1 echo %i >> UniqueSubnets.txt
Find DHCP Scopes not in AD
for /f "tokens=1,2" %i in (Output from 'Find Unique Subnets') do @for /f "skip=2 delims==" %m in ('find /i "%j" SubnetMaskShorthand.txt') do @find /i "%i/%m" Output from 'AD Subnet and Site Information' >NUL & @If ErrorLevel 1 for /f "skip=1 tokens=2 delims=:" %p in ('find /i /c "%i %j" Output from 'Find Subnets from formatted output'') do @Echo %i/%m,%p
DHCP Clients Per AD Site
for /f "tokens=1,2,3 delims=/ " %i in (Output from 'AD Subnet and Site Information') do @For /f "skip=2 tokens=1,2 delims==" %m in ('find /i "%j=" SubnetMaskShorthand.txt') do @For /f "skip=1 tokens=2 delims=:" %p in ('find /i /c "%i,%n" Output from 'Find Subnets from DHCP clients') Do @Echo %i/%m,%p,%k
DHCP Servers Per AD Site
for /f "tokens=1,2 delims=/" %i in (SiteClientCounts.txt) do @for %k in ("Output from ‘DHCP Server Active Scope Info’") do @find /i "%i" "%k" >nul & If ErrorLevel 0 if Not ErrorLevel 1 echo %i/%j,%~nk
Total DHCP Scopes
find /i "subnet" "Output from DHCP server information" find /i "subnet"
WINS command-line operations
WINS serer information
Netsh wins server WINS_SERVER dump > wins.txt
WINS Statistics
for /f "tokens=1,2 delims=," %i in (WINSServers.txt) do netsh wins server %i show statistics >> WINSConfig_%j.txt
WINS Record counts per server
for /f "tokens=1,2 delims=," %i in (WINSServers.txt) do netsh wins server %i show reccount %i >> WINSRecordCount.txt
WINS Server Information
for /f "tokens=2 delims=," %i in (WINSServers.txt) do netsh wins server %i show info >> WINSConfig_%i.txt
WINS Server Dump
for /f "tokens=2 delims=," %i in (WINSServers.txt) do netsh wins server %i dump > WINSConfig_%i.txt
WINS Static Records per Server
netsh wins server LocalWINSServer show database servers={} rectype=1
Use WMI to find the WINS entries for DNS-enabled NICs on a list of servers
for /f %i in (servers.txt) do @for /f "skip=1" %m in ('"wmic /node:%i path Win32_NetworkAdapterConfiguration WHERE FullDNSRegistrationEnabled=True get WINSPrimaryServer"') do @echo %i,%m
Set the WINS entry for the specified network
psexec %server% netsh interface ip set wins "Local Area Connection" static %WINSIP%
——————-
Thanks,
https://sccm07.blogspot.com/