dnsserverresourcerecord - все расширенные свойства и зоны - PullRequest
0 голосов
/ 18 декабря 2018
Get-DnsServerResourceRecord -ComputerName server -ZoneName zone.com

Я хочу запустить эту команду и получить наборы HostName, RecordType, ZoneName и All RecordData.

У меня есть что-то вроде этого:

Get-DnsServerResourceRecord zone.com -ComputerName server |
    select hostname, recordType, name,
        @{Name='ARecordData';Expression={$_.RecordData.IPv4Address}},
        @{Name='CNameRecordData';Expression={$_.RecordData.HostnameAlias}}

Моя проблемадва раза.

  1. Мне нужно знать, как получить ZoneName в наборе записей, поэтому, если я хочу пропустить несколько зон, я могу хранить эти данные отдельно.
  2. Приведенный выше пример будетсоздать разные столбцы для каждого RecordData.Поскольку запись DNS будет иметь только одно из этих значений, есть ли способ объединить их в один столбец с помощью PowerShell?

1 Ответ

0 голосов
/ 18 декабря 2018
  1. Вы можете добавить имя зоны как вычисляемое свойство точно так же, как вы делаете с данными записи.

    foreach ($zone in $zone_list) {
        Get-DnsServerResourceRecord -ZoneName $zone -ComputerName server |
            Select-Object hostname, @{n='ZoneName';e={$zone}}, recordType, ...
    }
    
  2. ДонНе создавайте отдельные свойства, вместо этого используйте оператор switch, чтобы выбрать соответствующие данные в зависимости от типа записи в одном свойстве.

    ... | Select-Object hostname ..., @{n='Data';e={
        $rr = $_
        switch ($rr.RecordType) {
            'A'     {$rr.RecordData.IPv4Address}
            'CNAME' {$rr.RecordData.HostnameAlias}
            ...
        }
    }}
    
...