使用 Powershell 列出 AD 中的组和用户数
List groups and number of users in AD using Powershell
我正在尝试从 AD 中提取以“pegp”开头的组列表以及每个组中有多少用户的计数,并在 PowerShell 中执行此操作。这个脚本会给我一个所有组的列表,但我还需要每个组中有多少用户:
$groups = Get-ADGroup -Filter "Name -like 'pegp*'"
$Output = forEach($group in $groups) {
Get-ADGroup -Identity $group | Select-Object name
}
$Output | Export-Csv C:\temp\file_test2.csv
然后我尝试了这段代码,但它没有给我每个组中的用户计数,实际上是在 CSV 中的每个组名之后插入了一个额外的行:
$groups = Get-ADGroup -Filter "Name -like 'pegp*'"
$Output = forEach($group in $groups) {
Get-ADGroup -Identity $group | Select-Object name
(Get-ADGroupMember -Identity $group).count
}
$Output | Export-Csv C:\temp\file_test4.csv
由于我对 PowerShell 和一般编程仍然不熟悉,所以我想我应该深入了解知识库以帮助我找出我哪里出错了。谢谢!
您当前的代码生成一个交替流,其中包含 1 个名称为 属性 的对象和 1 个整数,这就是 Export-Csv
未生成您想要的结果的原因 - 它期望 统一输入。
您要做的是生成 1 个具有 2 个属性的对象 - 为此,您可以使用 Select-Object
cmdlet 计算 属性会员人数:
$groupsWithMemberCount = Get-ADGroup -Filter "Name -like 'pegp*'" |Select Name,@{Name='MemberCount';Expression={@(Get-ADGroupMember -Identity $_).Count }}
# no need to call Get-ADGroup again, we already have all the information we need
$groupsWithMemberCount |Export-Csv C:\temp\file_test4.csv -NoTypeInformation
请注意,这计算的是成员总数(主体和嵌套组)。
如果您只需要用户,请根据他们的 objectClass
:
过滤来自 Get-ADGroupMember
的输出
$groupsWithMemberCount = Get-ADGroup -Filter "Name -like 'pegp*'" |Select Name,@{Name='MemberCount';Expression={@(Get-ADGroupMember -Identity $_ |Where-Object objectClass -eq 'user').Count}}
我正在尝试从 AD 中提取以“pegp”开头的组列表以及每个组中有多少用户的计数,并在 PowerShell 中执行此操作。这个脚本会给我一个所有组的列表,但我还需要每个组中有多少用户:
$groups = Get-ADGroup -Filter "Name -like 'pegp*'"
$Output = forEach($group in $groups) {
Get-ADGroup -Identity $group | Select-Object name
}
$Output | Export-Csv C:\temp\file_test2.csv
然后我尝试了这段代码,但它没有给我每个组中的用户计数,实际上是在 CSV 中的每个组名之后插入了一个额外的行:
$groups = Get-ADGroup -Filter "Name -like 'pegp*'"
$Output = forEach($group in $groups) {
Get-ADGroup -Identity $group | Select-Object name
(Get-ADGroupMember -Identity $group).count
}
$Output | Export-Csv C:\temp\file_test4.csv
由于我对 PowerShell 和一般编程仍然不熟悉,所以我想我应该深入了解知识库以帮助我找出我哪里出错了。谢谢!
您当前的代码生成一个交替流,其中包含 1 个名称为 属性 的对象和 1 个整数,这就是 Export-Csv
未生成您想要的结果的原因 - 它期望 统一输入。
您要做的是生成 1 个具有 2 个属性的对象 - 为此,您可以使用 Select-Object
cmdlet 计算 属性会员人数:
$groupsWithMemberCount = Get-ADGroup -Filter "Name -like 'pegp*'" |Select Name,@{Name='MemberCount';Expression={@(Get-ADGroupMember -Identity $_).Count }}
# no need to call Get-ADGroup again, we already have all the information we need
$groupsWithMemberCount |Export-Csv C:\temp\file_test4.csv -NoTypeInformation
请注意,这计算的是成员总数(主体和嵌套组)。
如果您只需要用户,请根据他们的 objectClass
:
Get-ADGroupMember
的输出
$groupsWithMemberCount = Get-ADGroup -Filter "Name -like 'pegp*'" |Select Name,@{Name='MemberCount';Expression={@(Get-ADGroupMember -Identity $_ |Where-Object objectClass -eq 'user').Count}}