2017-09-21 4 views
2

Der folgende Code soll Benutzer zählen und vergleichen und die Gesamtanzahl ausgeben, aber irgendwie ist das Ergebnis leer. Was muss ich tun, um es zu beheben?Zähle Active Directory-Benutzer

$groups = $A_group, $B_Group 
$gm  = @() 

foreach ($group in $groups) { 
    $gm += Get-ADGroupMember $group -Recursive | 
      `where {$_.objectclass -eq 'user'} |` 
      ' select SamAccountName' 
} 

($gm.samaccountname | Select -Unique).Count 
Write-Output total: ($gm.samaccountname | Select -Unique).Count 
+0

Ihre Pipeline-Syntax ist gebrochen. Entfernen Sie die Backticks und einfachen Anführungszeichen. –

Antwort

0

du in einer viel Powershell-artige Weise tun können.

$groups = $A_group, $B_Group 
$uniqueMemberCount = $groups | 
    Get-ADGroupMember -Recursive | 
    Where-Object {$_.objectClass -ieq "user"} | 
    Select-Object -Unique | 
    Measure-Object | 
    Select-Object -ExpandProperty Count 

Write-Output "Total: $uniqueMemberCount" 
+0

Ich habe es. Wie exportiere ich nach CVS mit dieser Write-Ausgabe "Total: $ uniqueMemberCount"? – Power988

+0

Jetzt funktioniert's !! Ich danke dir sehr! – Power988

0

Ich glaube, Sie von den einzigartigen Mitglieder von zwei Gruppen zählen möchten:

$aGroup = @('a','b','c') 
$bGroup = @('b','c','e','f') 
(Compare-Object $aGroup $bGroup -IncludeEqual).count 
+0

Das stimmt und zählt auch die verschachtelten Gruppen. Es gibt Hunderte von Benutzern, also mit dem Code, den Sie erwähnt haben, nicht tun. – Power988

+0

Ihre Frage sagt nichts über das Zählen verschachtelter Gruppen. –