查找数组中的重复值

hap*_*enz 0 arrays powershell

我有以下代码:

cls
Get-Module -ListAvailable | Import-Module
Import-Module ActiveDirectory 
$Groups = Get-ADGroup -Filter {name -like 'XYZ'} | select name - 
ExpandProperty name
$i=0 
$tot = $Groups.count 
$Table = @()

$Record = @{
"Group Name" = ""
"Name" = ""
"username" = ""
}

Foreach ($Group in $Groups) {
#// Set up progress bar 
$i++ 
$status = "{0:N0}" -f ($i / $tot * 100) 
Write-Progress -Activity "Exporting AD Groups" -status "Processing 
Group $i of $tot : $status% Completed" -PercentComplete ($i / $tot * 
100) 
$Arrayofmembers = Get-ADGroupMember -identity $Group -recursive | 
select name, SamAccountName
foreach ($Member in $Arrayofmembers) {
$Record."Group Name" = $Group
$Record."Name" = $Member.name
$Record."username" = $Member.SamAccountName
$objRecord = New-Object PSObject -property $Record
$Table += $objrecord

}
 }
Write-Host $Table
Run Code Online (Sandbox Code Playgroud)

效果很好,但我想列出 $Record."Name" = $Member.name 中特定组的所有重复项,例如:

用户名 = barry 在 GROUP XYZ 中重复

我已经尝试过以下操作:

ForEach ($Element in $Table)
{
If (($Table -match $Element).count -gt 1)
{
    "Duplicates detected" 

}
}
Run Code Online (Sandbox Code Playgroud)

The*_*ian 9

最简单的答案是仅通过管道传输$TableGroup-Object过滤末尾计数大于 1 的组,如下所示:

$Table | Group 'Group Name','Name' | Where{$_.Count -gt 1}
Run Code Online (Sandbox Code Playgroud)

如果您希望在循环中间执行此操作,可以通过对 Get-ADGroupMember 的结果进行分组来实现,但我认为最后完成所有操作可能会更快。