通过 IP 地址从 Active Directory 区域获取 DNS 记录

Getting DNS Records from an Active Directory zone by IP Addresses

我正在尝试 运行 根据 IP 地址对我的 DNS 区域进行以下查询以 return 记录,但运气不好,脚本 运行s 但只是空输出.

Get-Content ip.txt| ForEach {
    Get-DnsServerResourceRecord -zonename "xxx.global" | where-object {$_.RecordData.ipv4address -eq "$_"}
}

ip.txt文件的内容是这样的:

"10.32.84.102"
"172.31.65.18"
"172.31.65.203"

我尝试修改我的原始命令,它工作正常,但我想 运行 它针对 IP 列表..

Get-DnsServerResourceRecord -zonename "xxx.global" | where-object {$_.RecordData.ipv4address -eq "10.32.84.102"}

我做错了什么?

您正在使用 $_ 来引用 Where-Object 中的不同对象。

where-object {$_.RecordData.ipv4address -eq "$_"}
             ^^^^                           ^^^^

$_ 一次仅设置为一个对象。如果你启动另一个管道,之前的值将会消失。

您需要执行以下操作:

$IPs = Get-Content ip.txt

foreach ($IP in $IPs) {
    Get-DnsServerResourceRecord -zonename "xxx.global" | where-object { $_.RecordData.ipv4address -eq $IP }
}

您可能还需要从 ip.txt 中删除双引号。 IP 是 10.32.84.102,而不是 "10.32.84.102"