0
$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 中)

4

2 回答 2

0

试试这个:

$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: $_"
}
于 2015-05-21T16:04:56.703 回答
0
$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 有多棒:)

于 2015-05-21T19:51:18.487 回答