Powershell NSlookup on DC 的正向和反向

Powershell NSlookup on DC's Forward and Reverse

$topDC1="10.254.90.17"
$topDC2="10.225.224.17"
$topDC3="10.110.33.32"
$topDC4="10.88.100.10"
$DomainName="office.adroot.company.net"
TRY{    
$hostname = [System.Net.DNS]::GetHostByName($topDC1).HostName.toupper()
$ipaddress = [System.Net.Dns]::GetHostAddresses($DomainName) | select IPAddressToString -ExpandProperty IPAddressToString
# I want the below to loop foreach ip in the object, ns it against all 4 topDC's, then output each result :( 
$NS1 = nslookup $ipaddress[0] $topDC1
Write-host $NS1
}
Catch{
write-host "error"
}
Here is my dirty code so far (just to keep it simple)

我正在尝试自动执行此操作: NSLOOKUP office.adroot.company.net 将结果放入对象 对于结果中的每个 ip,对我们的顶级 DC 执行 NSLOOKUP。 查找哪些 DC 在退役后没有被清理(仍在 dns 中)

试试这个:

$topDomainControllers = @("10.254.90.17", "10.225.224.17", "10.110.33.32", "10.88.100.10")

$DomainName="office.adroot.company.net"

try {
  $hostname = [System.Net.Dns]::GetHostByName($topDC1).HostName.ToUpper()
  $ipAddresses = [System.Net.Dns]::GetHostAddresses($DomainName) |
                 select -ExpandProperty IPAddressToString

  foreach ($ipAddress in $ipAddresses) {
    $nslookupResult = nslookup $ipAddress
    $foundIp = $nslookupResult[1] -match "^\D*(\d+\.\d+\.\d+\.\d+)$"

    if ($foundIp -eq $false) {
      continue
    }

    $domainController = $Matches[1]
    if ($topDomainControllers.Contains($domainController)) {
      Write-Output -Verbose "Found domain controller match for $domainController"
      break
    } else {
      Write-Output -Verbose "No match found for domain controller $domainController"
    }
  }
} catch {
  Write-Output "An error has occured: $_"
}
$DCList="10.254.90.17","10.225.224.17","10.110.33.32","10.88.100.10"
$DomainName="office.adroot.blorg.net","pcd.blorg.ca","blorg.ca","percom.adroot.blorg.net", "blorg.blorg.net","ibg.blorg.net","sacmcm.adroot.blorg.net","sysdev.adroot.blorg.net","adroot.blorg.net"
TRY{    
    foreach ($DomainNameItem in $DomainName){
        Write-Host ""
        Write-Host ""
        Write-Host "Looking UP result"$DomainNameItem -foreground yellow
        Write-Host ""
        $hostname = [System.Net.DNS]::GetHostByName($DCListItem).HostName.toupper()
        $ipaddress = [System.Net.Dns]::GetHostAddresses($DomainNameItem).IPAddressToString
            foreach ($ip in $ipaddress){
                Write-Host ""
                Write-Host "Looking UP result"$ip -foreground green
                    foreach ($topdns in $DCList){
                        $RESULTS = nslookup $ip $topdns
                        Write-host $RESULTS
                }        
            }
    }
}
Catch{
write-host "error"
}
Write-Host ""
Write-Host ""
pause

知道了!这将节省我大量的工作来确定是否有必要进行 DNS 清理。谢谢大家,我正在学习 Powershell 的强大之处:)