dnsserverresourcerecord - 所有扩展属性和区域
dnsserverresourcerecord - all expanded properties and zone
Get-DnsServerResourceRecord -ComputerName server -ZoneName zone.com
我想运行此命令并获取主机名、记录类型、区域名称和所有记录数据集。
到目前为止我有类似的东西:
Get-DnsServerResourceRecord zone.com -ComputerName server |
select hostname, recordType, name,
@{Name='ARecordData';Expression={$_.RecordData.IPv4Address}},
@{Name='CNameRecordData';Expression={$_.RecordData.HostnameAlias}}
我的问题有两个。
- 我需要知道如何将 ZoneName 放入记录集中,这样如果我想传递多个区域,我可以将数据分开。
- 以上示例将为每个 RecordData 创建不同的列。由于 DNS 记录只有这些值之一,有没有办法通过 PowerShell 将它们合并到一列中?
您可以像处理记录数据一样将区域名称添加为 calculated property。
foreach ($zone in $zone_list) {
Get-DnsServerResourceRecord -ZoneName $zone -ComputerName server |
Select-Object hostname, @{n='ZoneName';e={$zone}}, recordType, ...
}
不要创建单独的属性,而是使用 switch
语句根据单个 属性 中的记录类型 select 相关数据。
... | Select-Object hostname ..., @{n='Data';e={
$rr = $_
switch ($rr.RecordType) {
'A' {$rr.RecordData.IPv4Address}
'CNAME' {$rr.RecordData.HostnameAlias}
...
}
}}
Get-DnsServerResourceRecord -ComputerName server -ZoneName zone.com
我想运行此命令并获取主机名、记录类型、区域名称和所有记录数据集。
到目前为止我有类似的东西:
Get-DnsServerResourceRecord zone.com -ComputerName server |
select hostname, recordType, name,
@{Name='ARecordData';Expression={$_.RecordData.IPv4Address}},
@{Name='CNameRecordData';Expression={$_.RecordData.HostnameAlias}}
我的问题有两个。
- 我需要知道如何将 ZoneName 放入记录集中,这样如果我想传递多个区域,我可以将数据分开。
- 以上示例将为每个 RecordData 创建不同的列。由于 DNS 记录只有这些值之一,有没有办法通过 PowerShell 将它们合并到一列中?
您可以像处理记录数据一样将区域名称添加为 calculated property。
foreach ($zone in $zone_list) { Get-DnsServerResourceRecord -ZoneName $zone -ComputerName server | Select-Object hostname, @{n='ZoneName';e={$zone}}, recordType, ... }
不要创建单独的属性,而是使用
switch
语句根据单个 属性 中的记录类型 select 相关数据。... | Select-Object hostname ..., @{n='Data';e={ $rr = $_ switch ($rr.RecordType) { 'A' {$rr.RecordData.IPv4Address} 'CNAME' {$rr.RecordData.HostnameAlias} ... } }}