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