web-dev-qa-db-fra.com

Script PowerShell pour renvoyer les membres de plusieurs groupes de sécurité

Je dois renvoyer tous les membres de plusieurs groupes de sécurité à l'aide de PowerShell. Tous les groupes commencent avec les mêmes lettres.

Je peux renvoyer une liste de tous les groupes de sécurité pertinents en utilisant le code suivant:

Get-ADGroup -filter 'Name -like"ABC*"' | Select-Object Name

Et je sais que je peux renvoyer la liste des membres d'un groupe de sécurité spécifique en utilisant le code suivant:

Get-ADGroupMember "Security Group Name" -recursive | Select-Object Name

Cependant, je ne peux pas sembler les mettre ensemble, bien que je pense que ce que je cherche devrait ressembler à quelque chose comme ça (n'hésitez pas à me corriger, c'est pourquoi je suis là!)

$Groups = Get-ADGroup -filter 'Name -like"ABC*"' | Select-Object Name
ForEach ($Group in $Groups) {Get-ADGroupMember -$Group -recursive | Select-Object Name

Toutes les idées sur la façon de bien structurer cela seraient appréciées!

Merci,

Chris

6
Chris

Si vous ne vous souciez pas des groupes d'utilisateurs, et que vous voulez juste une grande liste d'utilisateurs, cela fait le travail:

$Groups = Get-ADGroup -Filter {Name -like "AB*"}

$rtn = @(); ForEach ($Group in $Groups) {
    $rtn += (Get-ADGroupMember -Identity "$($Group.Name)" -Recursive)
}

Puis les résultats: 

$rtn | ft -autosize
2
AndyMeFul

Ceci est plus propre et mettra dans un CSV.

Import-Module ActiveDirectory

$Groups = (Get-AdGroup -filter * | Where {$_.name -like "**"} | select name -expandproperty name)


$Table = @()

$Record = [ordered]@{
"Group Name" = ""
"Name" = ""
"Username" = ""
}



Foreach ($Group in $Groups)
{

$Arrayofmembers = Get-ADGroupMember -identity $Group | 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

}

}

$Table | export-csv "C:\temp\SecurityGroups.csv" -NoTypeInformation
8
Joseph Alves
Get-ADGroupMember "Group1" -recursive | Select-Object Name | Export-Csv c:\path\Groups.csv

J'ai obtenu que cela fonctionne pour moi ... Je suppose que vous pouvez mettre "Groupe 1, Groupe 2, etc." ou essayez un caractère générique . J'ai pré-chargé AD dans PowerShell auparavant: 

Get-Module -ListAvailable | Import-Module
4
BMOREiTGUY

Cela vous donnera une liste d'un seul groupe et des membres de chaque groupe. 

param
(   
    [Parameter(Mandatory=$true,position=0)]
    [String]$GroupName
)

import-module activedirectory

# optional, add a wild card..
# $groups = $groups + "*"

$Groups = Get-ADGroup -filter {Name -like $GroupName} | Select-Object Name

ForEach ($Group in $Groups)
   {write-Host " "
    write-Host "$($group.name)"
    write-Host "----------------------------"

    Get-ADGroupMember -identity $($groupname) -recursive | Select-Object samaccountname

 }
write-Host "Export Complete"

Si vous voulez le nom convivial ou d'autres détails, ajoutez-les à la fin de la requête select-object.

3
Jean-Claude D.