Question Lister les membres d'un groupe (serveur ou AD)
- Jacques Barathon
- Auteur du sujet
- Hors Ligne
- Administrateur
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 17 ans 5 mois #517
par Jacques Barathon
Lister les membres d'un groupe (serveur ou AD) a été créé par Jacques Barathon
Utile pour énumérer les membres d'un groupe - marche avec les groupes de l'AD ou les groupes d'un ordinateur (local ou distant):
[code:1]# get-groupmember.ps1
#
# Enumère les membres d'un groupe.
#
# Usage: get-member $group [$server]
#
# $group est le nom du groupe à parcourir.
# $server est le nom du serveur qui contient le groupe.
#
# Si $server n'est pas précisé, la machine locale est interrogée.
# On peut préciser un domaine à la place d'un nom de serveur.
#
param ($group, $server = \".\"«»)
if (! $group) {
throw \"Vous devez préciser le nom du groupe à parcourir.\"
}
$ADSIGroup = [ADSI]\"WinNT://$server/$group\"
foreach ($member in $ADSIGroup.Members()) {
$ADSIName = $member.GetType().InvokeMember(\"AdsPath\",\"GetProperty\",$null,$member,$null)
# Dans certains cas, on peut avoir un SID à la place du nom d'utilisateur.
# Dans ces cas-là, on affiche le SID sans chercher à reconstruire la
# chaîne domaine\utilisateur:
if ($ADSIName -match \"[^/]/[^/]\"«») {
[String]::Join(\"\\", $ADSIName.Split(\"/\"«»)[-2..-1])
}
else {
$ADSIName.Split(\"/\"«»)[-1]
}
}
[/code:1]
Le script n'affiche que les noms des utilisateurs (ou groupes) sous la forme domaine\utilisateur, ou éventuellement le SID si celui-ci n'est pas résolu. Pour afficher d'autres informations (telles que nom complet, éventuellement d'autres infos stockées dans l'AD) il faudra récupérer la sortie du script et la passer à un autre script qui interrogera l'AD pour obtenir ces infos supplémentaires.
En l'état, ce script m'est très utile pour récupérer les membres des groupes Administrateurs ou Utilisateurs avec pouvoir sur des PC du réseau.
Janel
[code:1]# get-groupmember.ps1
#
# Enumère les membres d'un groupe.
#
# Usage: get-member $group [$server]
#
# $group est le nom du groupe à parcourir.
# $server est le nom du serveur qui contient le groupe.
#
# Si $server n'est pas précisé, la machine locale est interrogée.
# On peut préciser un domaine à la place d'un nom de serveur.
#
param ($group, $server = \".\"«»)
if (! $group) {
throw \"Vous devez préciser le nom du groupe à parcourir.\"
}
$ADSIGroup = [ADSI]\"WinNT://$server/$group\"
foreach ($member in $ADSIGroup.Members()) {
$ADSIName = $member.GetType().InvokeMember(\"AdsPath\",\"GetProperty\",$null,$member,$null)
# Dans certains cas, on peut avoir un SID à la place du nom d'utilisateur.
# Dans ces cas-là, on affiche le SID sans chercher à reconstruire la
# chaîne domaine\utilisateur:
if ($ADSIName -match \"[^/]/[^/]\"«») {
[String]::Join(\"\\", $ADSIName.Split(\"/\"«»)[-2..-1])
}
else {
$ADSIName.Split(\"/\"«»)[-1]
}
}
[/code:1]
Le script n'affiche que les noms des utilisateurs (ou groupes) sous la forme domaine\utilisateur, ou éventuellement le SID si celui-ci n'est pas résolu. Pour afficher d'autres informations (telles que nom complet, éventuellement d'autres infos stockées dans l'AD) il faudra récupérer la sortie du script et la passer à un autre script qui interrogera l'AD pour obtenir ces infos supplémentaires.
En l'état, ce script m'est très utile pour récupérer les membres des groupes Administrateurs ou Utilisateurs avec pouvoir sur des PC du réseau.
Janel
Connexion ou Créer un compte pour participer à la conversation.
- Robin Lemesle
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 260
- Remerciements reçus 0
il y a 17 ans 4 mois #534
par Robin Lemesle
Robin MVP PowerShell
Réponse de Robin Lemesle sur le sujet Re:Lister les membres d'un groupe (serveur ou AD)
Merci Janel pour ce script, je propose de le mettre dans la bibliothèque de scripts si tu nous donnes ton accord.
Rob
Rob
Robin MVP PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Auteur du sujet
- Hors Ligne
- Administrateur
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 17 ans 4 mois #597
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Lister les membres d'un groupe (serveur ou AD)
Bon pour accord!
Janel
Janel
Connexion ou Créer un compte pour participer à la conversation.
- yahway
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 18
- Remerciements reçus 0
il y a 16 ans 4 mois #2583
par yahway
Réponse de yahway sur le sujet Re:Lister les membres d'un groupe (serveur ou AD)
bonjour,
Merci pour ce script qui m'est vraiment utile.
J'ai une question, étant débutant, j'aimerai que ce script soit executé sur plusieurs PC de mon domaine, ces pc étant listé dans un fichier .txt.
est il possible que la variable $server s'appuie sur ce fichier?
merci de votre aide.
Merci pour ce script qui m'est vraiment utile.
J'ai une question, étant débutant, j'aimerai que ce script soit executé sur plusieurs PC de mon domaine, ces pc étant listé dans un fichier .txt.
est il possible que la variable $server s'appuie sur ce fichier?
merci de votre aide.
Connexion ou Créer un compte pour participer à la conversation.
- daniel soares
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 133
- Remerciements reçus 0
il y a 16 ans 4 mois #2585
par daniel soares
Réponse de daniel soares sur le sujet Re:Lister les membres d'un groupe (serveur ou AD)
hello c'est tout a fait possible avec la cmdlette
get-content qui récupère les lignes d'un fichier texte
dans le cas ou tu as un nom de serveur par ligne
[code:1]
get-content -path cheminfichier |
foreach{$server = $_;$server | out-host}
[/code:1]
ou un peu plus complexe si tu as un fichier avec plusieurs valeurs en colonnes (ici le séparateur est la virgule)
[code:1]
get-content -Path ./server.txt | foreach{($_.split(\",\"«»))[0]}
[/code:1]
split decoupe les lignes en fonction du séparateur specifié ici je récupère la première colonne qui porte l'indice [0]
tu peux pousser un peu plus les possibilités en utilisant import-csv qui permet d'être plus clair dans le script tout en utilisant un fichier un peu plus fournis
get-content qui récupère les lignes d'un fichier texte
dans le cas ou tu as un nom de serveur par ligne
[code:1]
get-content -path cheminfichier |
foreach{$server = $_;$server | out-host}
[/code:1]
ou un peu plus complexe si tu as un fichier avec plusieurs valeurs en colonnes (ici le séparateur est la virgule)
[code:1]
get-content -Path ./server.txt | foreach{($_.split(\",\"«»))[0]}
[/code:1]
split decoupe les lignes en fonction du séparateur specifié ici je récupère la première colonne qui porte l'indice [0]
tu peux pousser un peu plus les possibilités en utilisant import-csv qui permet d'être plus clair dans le script tout en utilisant un fichier un peu plus fournis
Connexion ou Créer un compte pour participer à la conversation.
- Kabeem
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 12 ans 9 mois #11216
par Kabeem
Réponse de Kabeem sur le sujet Re:Lister les membres d'un groupe (serveur ou AD)
Bonjour,
Pardon de \"déterrer\" ce post mais je débarque sur la planète PS et j'avais un besoin qui correponds au script proposé par Janel, connaître les membres du groupe admin local d'une liste de serveurs distants et je ne vois pas comment intégrer la liste des serveurs (get-content...) dans le script de Janel (dans le foreache en fait) pour pouvoir obtenir le resultat pour chaque serveur de ma liste. Je ne sais pas si c'est clair mais si oui, merci pour votre aide.
cordialement,
Kabeem.
Pardon de \"déterrer\" ce post mais je débarque sur la planète PS et j'avais un besoin qui correponds au script proposé par Janel, connaître les membres du groupe admin local d'une liste de serveurs distants et je ne vois pas comment intégrer la liste des serveurs (get-content...) dans le script de Janel (dans le foreache en fait) pour pouvoir obtenir le resultat pour chaque serveur de ma liste. Je ne sais pas si c'est clair mais si oui, merci pour votre aide.
cordialement,
Kabeem.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.127 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Contributions à la communauté
- Lister les membres d'un groupe (serveur ou AD)