WMI查询以确定DNS服务器重复A记录

时间:2016-09-30 11:37:34

标签: csv dns wmi powershell-v2.0

我想写一个powerschell sciprt来查询DNS重复记录,如下所示。但是这个脚本返回的A记录具有相同的主机名。而不是这个我想要获取具有相同IP地址的不同主机名。

$DNS = Get-WmiObject -ComputerName 'DNS Server' -Namespace root\MicrosoftDNS  -Class "MicrosoftDNS_AType" -Filter "ContainerName='Zone_Name'" | Group-Object  OwnerName|Where-Object{$_.Count -gt1}


# Create our CSV file to hold the data
$file = 'C:\temp\DNS.csv'
New-Item -ItemType file -Path $file -Force 
Add-Content -Path $file -Value "Name,IPAddress"

# Iterate of the DNS items grabbing the name and IPAddress
foreach ($item in $DNS) {
    foreach ($IPAddresses in $item.Group) {
        $value = "{0},{1}" -f $item.name,$IPAddresses.IPAddress
        Add-Content -Path $file -Value $value
    }
}

结果应该类似于:

Name    IPAddress
Server1 10.194.111.22
Server1 10.140.111.22
Server2 10.333.19.121
Server2 10.333.131.24

我想要做的是,它将是具有相同IP地址的不同主机名:

Name    IPAddress
Server1 10.194.111.22
Server2 10.194.111.22
ServerA 10.333.19.121
ServerB 10.333.19.121

1 个答案:

答案 0 :(得分:0)

IPAddress分组,而不是OwnerName。您还可以通过相同的管道扩展结果,并使用Export-Csv将其写入输出文件,这样您就不必手动构建CSV数据。

Get-WmiObject -ComputerName 'DNS Server' -Namespace root\MicrosoftDNS -Class "MicrosoftDNS_AType" -Filter "ContainerName='Zone_Name'" |
    Group-Object IPAddress |
    Where-Object { $_.Count -gt 1 } |
    ForEach-Object { $_.Group | Select-Object OwnerName, IPAddress } |
    Export-Csv 'C:\temp\DNS.csv'