DNS Powershell - como faço para pesquisar uma lista de servidores DNS e depois filtrar os resultados?

2

Eu estou tentando pesquisar uma lista de servidores DNS específicos (eu tenho em um arquivo) e, em seguida, consultar um nome de host específico. Eu posso fazer isso :)

O próximo bit é que eu gostaria de retornar uma lista desses servidores DNS que retornam um resultado que não seja outlook-emea *, eu quero o IP do servidor DNS e também o resultado.

O problema que eu tenho é o comando DNS retorna CNAMES e registros A - estou interessado apenas em registros e também não sei como filtrar os resultados. Isso é o que eu tenho até agora.

$Address = 'outlook.office365.com'

#$listofIPs = Get-Content 'C:\Users\user1\file.txt'

$listofIPs = '8.8.8.8'

$ResultList = @()

foreach ($ip in $listofIPs)

{

 $Result = Resolve-DnsName -Name $Address -Type A -Server $ip

Write-Host ""
Write-Host DNS Server: -foregroundcolor "green" $ip 
Write-Host ""
Write-Host Resolved Names: -foregroundcolor "green"

}

Alguém pode ajudar?

Dave Davidson
fonte
Minha resposta atende às suas necessidades? Se sim, por favor, vote e marque como resposta aceita. Se isso não acontecer, por favor, explique como posso melhorá-lo. Obrigado
Ob1lan
Muito obrigado mesmo !!! Agora vou tentar entender o código para aprender com ele. Muito Obrigado . Sinto muito meu representante é muito baixo para UpVote .... mas é perfeito!
Dave Davidson

Respostas:

0

Aqui está o script que eu tenho até agora, baseado no seu:

$Address = "outlook.office365.com"

$listofIPs = Get-Content "C:\file.txt"

$ResultList = @()

foreach ($ip in $listofIPs)

{
    # The following query will list only records begining with "outlook-", but not begining with "outlook-emea"
    $DNSquery = (Resolve-DnsName -Name $Address -Type A -Server $ip).Name | Where-Object {$_ -inotlike "outlook-emea*" -and $_ -ilike "outlook-*"}

    # We assume, based on several tests, that selecting the first result for the previous query is enough.
    $Result = $DNSquery | Select -First 1

    if ($DNSquery)
    {
        # Creating custom object to feed the array
        $Object = New-Object PSObject
        $Object | Add-Member -MemberType NoteProperty -Name "DNS Server IP" -Value $ip
        $Object | Add-Member -MemberType NoteProperty -Name "Result" -Value $Result
        $ResultList += $Object
    }

    # Displaying the array with the results
    $ResultList
}

E aqui está o resultado que tenho, quando meu arquivo de texto contém 8.8.8.8, 8.8.8.4, 173.255.0.194 e 173.201.20.134:

Resultado da consulta de DNS

Ob1lan
fonte
Eu editei a parte em que você pediu ao OP para aceitar sua resposta. Se você quiser, pode adicioná-lo como um comentário direcionado a pessoas novas no StackExchange, mas não deve fazer parte de sua resposta em si.
Karan