Powershell:获取成员资格和组成员数量
Powershell : getting memberships and the number of members of the group
如果群组成员少于 3 人,我想像下面那样导出这些成员。
顺便说一下,还有嵌套组。
我想要的输出:
Members,Group Name,Members Count,Members
NO,Group01,10
NO,Group02,1,user01
YES,Group03,2,user01;user02
这是我的脚本:
Import-Csv -Path "C:\tmp\unused.csv" | ForEach-Object {
$out = @{ 'Group Name' = $_.Name }
if((Get-ADGroup $_.Name -Properties Member).Member) {
$out['Members'] = 'YES'
}
else {
$out['Members'] = 'NO'
}
[pscustomobject] $out
} | Export-Csv "C:\tmp\export.csv" -NoTypeInformation -Encoding UTF8
这应该会给您预期的结果,请注意 Get-ADGroupMember
将为每个组递归 return 所有成员,如果这不是您想要的,请删除 -Recursive
参数。
另请注意,这可能 return 任何对象 class 作为组的成员(计算机、其他组、用户、服务帐户...),您只想定位 Users 作为成员,使用以下内容:
$members = @(Get-ADGroupMember $_.Name -Recursive).where{ $_.objectClass -eq 'user' }
代码
Import-Csv -Path "C:\tmp\unused.csv" | ForEach-Object {
$out = [ordered]@{
'HasMembers' = ''
'Group Name' = $_.Name
'Members Count' = ''
'Members' = ''
}
# using `-Recursive` since there can be nested groups
$members = @(Get-ADGroupMember $_.Name -Recursive)
# if count is 0
if(-not $members.Count) {
$out['HasMembers'] = 'NO'
}
# if count is lower than 3 and greater than 0
elseif($members.Count -lt 3) {
$out['HasMembers'] = 'YES'
$out['Members'] = $members.Name -join ';'
}
# if count is greater than 2
else {
$out['HasMembers'] = 'YES'
}
$out['Members Count'] = $members.Count
[pscustomobject] $out
} | Export-Csv "C:\tmp\export.csv" -NoTypeInformation -Encoding UTF8
如果群组成员少于 3 人,我想像下面那样导出这些成员。 顺便说一下,还有嵌套组。
我想要的输出:
Members,Group Name,Members Count,Members
NO,Group01,10
NO,Group02,1,user01
YES,Group03,2,user01;user02
这是我的脚本:
Import-Csv -Path "C:\tmp\unused.csv" | ForEach-Object {
$out = @{ 'Group Name' = $_.Name }
if((Get-ADGroup $_.Name -Properties Member).Member) {
$out['Members'] = 'YES'
}
else {
$out['Members'] = 'NO'
}
[pscustomobject] $out
} | Export-Csv "C:\tmp\export.csv" -NoTypeInformation -Encoding UTF8
这应该会给您预期的结果,请注意 Get-ADGroupMember
将为每个组递归 return 所有成员,如果这不是您想要的,请删除 -Recursive
参数。
另请注意,这可能 return 任何对象 class 作为组的成员(计算机、其他组、用户、服务帐户...),您只想定位 Users 作为成员,使用以下内容:
$members = @(Get-ADGroupMember $_.Name -Recursive).where{ $_.objectClass -eq 'user' }
代码
Import-Csv -Path "C:\tmp\unused.csv" | ForEach-Object {
$out = [ordered]@{
'HasMembers' = ''
'Group Name' = $_.Name
'Members Count' = ''
'Members' = ''
}
# using `-Recursive` since there can be nested groups
$members = @(Get-ADGroupMember $_.Name -Recursive)
# if count is 0
if(-not $members.Count) {
$out['HasMembers'] = 'NO'
}
# if count is lower than 3 and greater than 0
elseif($members.Count -lt 3) {
$out['HasMembers'] = 'YES'
$out['Members'] = $members.Name -join ';'
}
# if count is greater than 2
else {
$out['HasMembers'] = 'YES'
}
$out['Members Count'] = $members.Count
[pscustomobject] $out
} | Export-Csv "C:\tmp\export.csv" -NoTypeInformation -Encoding UTF8