De base, en powershell, depuis un serveur AD, on peut extraire les membres d'un groupe et en stocker le résultat dans un fichier CSV ainsi :
Import-Module ActiveDirectory
Get-ADGroupMember -identity "Nom_Groupe_AD" | select name, SamAccountName | sort-object -property name | Export-csv -path C:\Resultat_Extract_membres_groupe_AD.csv -NoTypeInformation
Lien vers le fichier : cliquez ici
Si vous voulez lister tous les membres d'un groupe AD, cad y compris qui sont dans les groupes membres du groupe, il faut ajouter le mot clé récursif
Get-ADGroupMember "Nom du groupe" -Recursive | Select Name, ObjectClass | sort-object -property Name
Lien vers le fichier : cliquez ici
Afficher les ordinateurs inactifs d'un groupe
$MesMembres = Get-ADGroupMember -identity "MonGroupe" | Where { $_.objectClass -eq "computer"}
foreach ($UneLigne in $MesMembres){
$MonComputer = Get-ADComputer -Identity $UneLigne -Properties *
if ($MonComputer.Enabled -eq $false){
write-host $MonComputer.Name
}
}
Lien vers le fichier : cliquez ici
Ci-dessous c'est un peu plus compliqué et du coup peu pratique.
Il faut le module quest etc ... pour que cela fonctionne :
#Version du 1er aout 2013
Clear-Host
function Get-ScriptDirectory
{
$Invocation = (Get-Variable MyInvocation -Scope 1).Value
$ScriptFolderPath = Split-Path $Invocation.MyCommand.Path
return $ScriptFolderPath
}
function CheckQuestActiveRolesADM()
{
#Test la présence des outils Quest
$Error.Clear()
Get-PSSnapin Quest.ActiveRoles.ADManagement
if($Error.Count -ne 0)
{
Clear-Host
Write-Host "`n`n`t`t ERROR - To run this script, the Quest.ActiveRoles.ADManagement must be installed and registered with Powershell." -foregroundcolor red -backgroundColor yellow
Write-Host "`t`t go to the Settings menu in Powershell Plus and click on Manage Snapins." -foregroundcolor red -backgroundColor yellow
break
}
}
#Test de la présence des outils Quest
CheckQuestActiveRolesADM
$NomFichierResultat = "ExtractUsersFromGroup_Result.txt"
$NomGroupe = [string]
$MonResultat = [string]
$MonResultat = Read-Host "Login à analyser"
if ($MonResultat.Length -igt 0){
$EmplacementFichier = Get-ScriptDirectory
$EmplacementFichierResultat = "$EmplacementFichier\$NomFichierResultat"
$MonFichierResultat = New-Item -type file $EmplacementFichierResultat -Force
add-content $MonFichierResultat "Groupes AD du compte $MonResultat"
$GroupeSource = Get-QADGroupMember $MonResultat
foreach($OneMember in $GroupeSource)
{
add-content $MonFichierResultat $OneMember.DisplayName
}
# $objUserSource = Get-QADGroup -SamAccountName $MonResultat
# foreach ($UneLigne in $objUserSource.memberof){
# $UnGroupe = Get-QADGroup $UneLigne
# $NomGroupe = $UnGroupe.GroupName
# add-content $MonFichierResultat "$NomGroupe"
# }
}
else{
Write-Host "Vous n'avez rien saisi"
}
Write-Host "Terminé !"
Lien vers le fichier : cliquez ici
Pages Web
Site Web | Description |
---|---|
Technet.microsoft.com | Viewing the Nested Members of a Group |
Téléchargement(s)
Nom | Site Web d origine | Description |
---|---|---|
PowerGUI.3.5.0.2293.msi | http://www.powergui.org/downlo... | PowerGui - Interface de développement en PowerShell |
Quest_ActiveRolesManageme... | http://www.quest.com/powershel... | Plug in ActiveRoles de Quest pour gérer l'AD |
Article(s) suivant(s)
Article(s) précédent(s)
Article(s) en relation(s)
Lister les membres du groupe local administrateurs sur plusieurs machines
Lister les membres des groupes d'un domaine AD
Lister les users d'une liste de groupes d'un domaine AD (nested)
Nom des champs de l'active directory pour le scripting
PowerShell - Lister les comptes de l'AD