Powershell:在Resolve-DNS中使用Get-ADComputer的输出

时间:2017-12-19 21:20:07

标签: powershell

我经常按照他们的描述查找AD计算机名称,我希望有一种方法可以将该输出放入Resolve-DNSName以获取IP地址。

这是我输入的内容,用于根据AD说明获取计算机名称:

$Description = Read-Host `n `n "Enter Description"
Get-ADComputer -Filter * -Properties Description |
    Where-Object { $_.Description -like $Description } |
    Format-Table Description,Name

这将为我提供IP地址:

$PCNumber = Read-host "Computer Number"
Resolve-DnsName -Name $PCNumber | Format-Table IPAddress

我是否可以获得有关如何将其组合在一起的指导,以便我可以输入说明,它将带回说明和名称,以及IP地址?

2 个答案:

答案 0 :(得分:3)

您从AD中提取信息的方式实在是效率低下 管道的最佳实践咒语是:向左过滤,向右格式化

$Description = Read-Host -Prompt 'Enter Description'

## $PC becomes a PSCustomObject with three properties
$PC = Get-ADComputer -Filter "Description -like '*$Description*'" -Properties Name,Description |
    Select-Object -Property @(
        'Name'
        'Description'
        @{ N = 'IPAddress'
           E = { (Resolve-DnsName -Name $_.Name).IPAddress }
         }
    )

$PC | Format-Table -Property Name,Description,IPAddress -Autosize

答案 1 :(得分:0)

Get-ADComputer有一个名为IPv4Address的属性。它不是Active Directory属性,而是在执行时枚举的属性。它基本上执行DNS请求,就像您使用Resolve-DNSName但没有任何其他命令一样。这为您提供了以下方便的oneliner

Get-ADComputer -Filter {Description -like "*$Description*"} -Properties Name, Description, IPv4Address

有关IPv4Address的详细信息,请参阅IPv4Address Attribute In Get-ADComputer