2016-08-02 78 views
2

我正在寻找一种方式来列出针对每个用户显示匹配特定值的AD属性的次数。PowerShell Get-ADUser - 属性Tally

特别是 - 我们AD中的用户有一个自定义属性区分他们的公司。我需要运行每月报告,以显示所有公司的列表以及列出的用户数量。

这与我拥有的差不多 - 但它对我们的帐户团队来说不是用户友好的。

import-csv c:\HostedCompanyList.csv -header ID | 
foreach { 
$total = (get-aduser -filter "(extensionattribute1 -eq '$($_.ID)') -and (extensionattribute2 -eq 'billed')" -properties *).count 
write-host $total $_.ID 
} 

这是HostedCompanyList.csv

我的输出显示的
ID 
Company1 
Company2 
Company3 

为'

35 Company1 
12 Company2 
27 Company3 

我想将该信息输出到CSV或HTML文件,而不是内容将其显示在PS窗口上。

  • 我很欣赏这可能已经是一个非常漫长的方式来运行此查询 - 我可能忽略了一个更简单的方法吗?

  • 如果有方法我可以做到这一点,而无需根本导入CSV文件 - 当新的“公司”被添加或带走时,将删除需要添加额外条目的列表。

谢谢你提供的任何帮助。

回答

1

未经检验的,因为我没有相同的扩展属性,但这种形状:

  • 查询每一个人,过滤收费的人
  • group-object按公司名称
  • 选择属性,并出口到CSV

应该使用一个查询,没有文本文件读取和csv导出。

$filter = "extensionattribute2 -eq 'billed'" 
$users = Get-ADUser -filter $filter -Property extensionattribute1, extensionattribute2 

$groups = $users | Group -Property extensionattribute1 
$groups | select Count, Name | Export-Csv out.csv -notypeinformation 
+0

@ mklement0是的,但它将使代码块具有一个水平滚动条,然后使第二线不平衡和短,然后推动整个东西朝向将被恐吓和多行的一行.. 。;) – TessellatingHeckler

+0

大声说出这个解释... – sodawillow

+1

@ mklement0这是一个很整洁的方法,我编辑过 - 谢谢 – TessellatingHeckler