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

问题描述 投票:0回答:2

我经常按照他们的描述查找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

我是否可以获得如何将它们组合在一起的指导,以便我可以输入描述,它将带回描述和名称,以及IPAddress?

powershell
2个回答
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

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

© www.soinside.com 2019 - 2024. All rights reserved.