【问题标题】:How to remove specific AAAA records from DNS using Powershell?如何使用 Powershell 从 DNS 中删除特定的 AAAA 记录?
【发布时间】:2016-12-06 08:33:42
【问题描述】:

我想从我们的 DNS 服务器中删除所有公共 IPv6 地址,例如2000:a61:10e3:8f01:: 或 2003:d8:8bd7:c000:: 但保留所有链接本地或站点本地地址,例如fd00:: 原封不动。

我想出了如何获取所有 AAAA 记录的列表:

$DNSServer = "dns.domain.net"
$ZoneName = "domain.net"
$NodeDNS = $null
$NodeDNS = Get-DnsServerResourceRecord -ZoneName $ZoneName -ComputerName $DNSServer -RRType AAAA -ErrorAction SilentlyContinue

现在的问题是如何在调用 Remove-DNSServerResourceRecord 命令之前过滤所有这些“公共”记录?

Remove-DnsServerResourceRecord -ZoneName $ZoneName -ComputerName $DNSServer -InputObject $NodeDNS -Force

将删除所有 AAAA 记录。

【问题讨论】:

    标签: powershell dns ipv6


    【解决方案1】:

    你可以使用这个过滤器:

    Get-DnsServerResourceRecord -ZoneName $ZoneName -ComputerName $DNSServer -RRType AAAA -ErrorAction SilentlyContinue | 
    Where-Object {$_.RecordData.IPv6Address.IPAddressToString -match '2000:a61:10e3:8f01' -or `
    $_.RecordData.IPv6Address.IPAddressToString -match '2003:d8:8bd7:c000' -and `
    $_.RecordData.IPv6Address.IPAddressToString -notmatch '^fd00'
    } | Remove-DnsServerResourceRecord -ZoneName $ZoneName -WhatIf
    

    示例使用 Where-Object 过滤返回的带有特定字符串 -match -and-notmatch 的数据,更多解释请参见 Get-Help about_Comparison_Operators

    我添加了-WhatIf 参数,它显示了它在实际进行更改之前所做的事情,只是为了确保在删除之前获得正确的结果,如果没问题,请删除-WhatIf

    【讨论】:

    • 感谢您的意见!这会起作用,但是我无法将过滤后的结果传递给 Remove-DnsServerResourceRecord。如果我按照建议进行操作,我会收到异常:+ Remove-DnsServerResourceRecord -WhatIf + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (DnsServerResourceRecord:PSObject) [Remove-DnsServerResourceRecord], ParameterBindingException + FullyQualifiedErrorId : InputObjectMissingMandatory,Remove-DnsServerResourceRecord
    • 只需添加$ZoneName,更新答案,如果它解决了您的问题,请投票/接受答案
    • 我还必须添加 -ComputerName $DNSServer。现在可以了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 2011-02-14
    相关资源
    最近更新 更多