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
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
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
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
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.