【发布时间】:2020-06-12 00:06:14
【问题描述】:
我正在使用 PowerShell 在 Active Directory 环境中构建一些脚本,目前正在努力寻找一种方法来计算对象。我的基本搜索是:
$DClist = (Get-ADForest).Domains | % { Get-ADDomainController –Filter * -Server $_ } | Select Site, Name, Domain
它会生成以下输出:
Site Name Domain
---- ---- ------
Site-A DC-123 acme.local
Site-A DC-ABC acme.local
Site-B DC-XYZ domain.local
Site-C DC-YPT domain.local
现在我想计算“名称”列中的对象数量并显示如下内容:
Site Count_of_Name
---- ----
Site-A 2
Site-B 1
Site-C 1
我已经尝试了很多东西,到目前为止我最接近的是使用:
$DcList | Group-Object Site
但不幸的是,这不是正确的方法,因为它只计算“站点”的数量而“忽略”其余的。也试过这个,但它也没有像我预期的那样工作:
$DcList | Group-Object Site, Name
请帮我弄清楚这其中的逻辑。
********************** 更新 ************************
我终于能够做到这一点,但我想不出一种方法来计算“站点”列中的对象:
$DClist | Group-Object -Property Site | ForEach-Object -Process {
[PSCustomObject]@{
Site = $_.Name
DCs = ($_.Group.Site)
}
}
请帮帮我。我觉得我现在非常接近解决方案。 :)
【问题讨论】:
-
为什么
group-object site不起作用?仅当Name为空白或在同一site下重复时,它才会起作用 -
使用
$_.Group.Count或$_.Group.Length -
group-object site计算“站点”的数量,我想要计算每个“站点”上的“名称”数量。现在关于$_.Group.Count,它确实很有魅力!感谢您帮助我解决这个问题!如您所见,在编写脚本方面,我完全是初学者。
标签: windows powershell object count active-directory