
特定の DNS サーバーのリスト (ファイルに保存) を検索し、特定のホスト名を照会しようとしています。この部分は実行できます :)
次の部分は、outlook-emea* 以外の結果を返す DNS サーバーのリストを返すことです。DNS サーバーの IP と結果も必要です。
私が抱えている問題は、DNS コマンドが CNAME と A レコードを返すことです。私が興味があるのは A レコードだけであり、また、結果をフィルタリングする方法がよくわかりません。これが、これまでの私の状況です。
$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"
}
誰か助けてくれませんか?
答え1
これがあなたのスクリプトに基づいて私がこれまでに作成したスクリプトです:
$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
}
テキスト ファイルに 8.8.8.8、8.8.8.4、173.255.0.194、173.201.20.134 が含まれている場合の結果は次のとおりです。