Question Lister les utilisateurs des groupe locaux (Résolu)

Plus d'informations
il y a 16 ans 10 mois #4586 par Francois
ola ola

tout d'abord merci pour ce site / forum car il est d'une aide precieuse dans mon aventure Powershell ^^
mais la je bloque :(

je cherche a lister les utilisateurs de mes groupe locaux sur mon ad...

voila mon code

[code:1]$ldapQuery = \"(&(objectCategory=group))\"
$de = new-object system.directoryservices.directoryentry
$ads = new-object system.directoryservices.directorysearcher -argumentlist $de,$ldapQuery
$complist = $ads.findall()
$complist | Sort-Object -Property path | Where-Object {$_.path -like \"*gl*\"} | Format-wide -Property path -autosize >c:\groupe_locaux.txt[/code:1]
mes groupes locaux ont tous un nom \"gl_*\" donc pas de prob , j'arrive a lister les groupes.

un exemple du fichier text en sortie :
LDAP://CN=GL_Achat_Modif,OU=Achat,dc=powershell-scripting,dc=com
Nickel sauf que j'aimerais que ca ressemble plus a :
LDAP://CN=GL_Achat_Modif
deja je ne vois pas comment faire :(

ensuite , j'aimerais bien lister les utilisateurs et groupe contenu dans les groupes locaux et la ca devient plus dur...
j'imagine faire ca avec un foreach-object mais malgré tout mes efforts , j'y arrive pas :(

une idée? de l'aide?
promis , je fais un bisou à celui qui m'aidera a parvenir a mon but... :p<br><br>Message édité par: Arnaud, à: 25/05/09 23:56

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 10 mois #4589 par PASCAULT
Bonjour fpucorbier,

Tu peux déjà peut-être faire une recherche plus fine pour rechercher seulement les groupes de domaine locaux.
tu spécifies dans ta requête LDAP le type de groupe recherché. Pour un local, cela doit être \&quot;-2147483644\&quot;
[code:1]$ldapQuery = \&quot;(&amp;(objectCategory=group)(grouptype=-2147483644))\&quot;[/code:1]
Je ne sais pas trop pourquoi tu recherches à avoir ce résultat :

LDAP://CN=GL_Achat_Modif

mais si tu recherches à avoir ça, je pense que le mieux est de passer par les expressions régulières.
ex:
[code:1]$complist[0].path -match ('LDAP://(?&lt;cngroup&gt;.+?),');$matches.cngroup[/code:1]
Sinon, peux-être que tu pourrais récupérer l'attribut cn ou name... mais je ne sais pas ce que souhaite...

Quelquechose comme ça sinon :
[code:1]$ldapQuery = \&quot;(&amp;(objectCategory=group)(grouptype=-2147483644))\&quot;
$de = new-object system.directoryservices.directoryentry
$ads = new-object system.directoryservices.directorysearcher -argumentlist $de,$ldapQuery
$complist = $ads.findall()
$complist|?{$_.path -match ('LDAP://(?&lt;cngroup&gt;.+?),')}|%{write-host $matches.cngroup}[/code:1]


Euh.. bisou...

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 10 mois #4628 par Francois
heyhey

MERCI !!! et desole pour la reponse tardive ^^
ton code est magnifique et marche super bien. Malheuresemment , j'y comprends pas grand chose :(

Comment es tu arrivé a faire ce code?

j'ai commencé a faire du powershell avec le bouquin de microsoft : kit d'aministration et je suis un peu decu.

Penses qu'avec le guide de reference , j'aurais plus de chance de comprendre ton code? :)

sinon , ta 2eme reponse est la bonne mais penses tu qu'on peut trier le resultat par ordre alphabetique et avoir aussi les utilisateurs des groupes locaux?

Pour l'instant , je n'ai aucune piste pr y arriver :(

Merci encore et promis , tu va avoir ton bisou :p<br><br>Message édité par: Arnaud, à: 25/05/09 23:55

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 10 mois #4629 par Francois
pr mettre en odre alphabetique , j'ai fait comme ca :

[code:1]$ldapQuery = \&quot;(&amp;(objectCategory=group)(grouptype=-2147483644))\&quot;
$de = new-object system.directoryservices.directoryentry
$ads = new-object system.directoryservices.directorysearcher -argumentlist $de,$ldapQuery
$complist = $ads.findall()
$complist = $complist | Sort-Object -Property path
$complist|?{$_.path -match ('LDAP://(?&lt;cngroup&gt;.+?),')}|%{write-host $matches.cngroup}[/code:1]

mais je trouve que ca fait pas \&quot;propre\&quot; , c'est plus de mac gyver qu'autre chose.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 10 mois #4630 par PASCAULT
Bonjour,

Le principal c'est d'arriver au but ! ;)
C'est pas mal... Après c'est que de l'optimisation de code, mais ce n'est pas toujours très clair pour celui qui lit derrière. A force d'en faire, on a quelques automatisme, et du coup, on pense pas à trop détailler.
Le plus compliqué dans mon code là, c'est plus la partie expression régulière

'LDAP://(?&lt;cngroup&gt;.+?),'

, c'est hyper puissant, mais c'est clair que ce n'est pas toujours simple à aborder au début.
Tu pourrais utiliser le .split sinon pour palier à ça.

Sinon, pour \&quot;optimiser\&quot; un peu plus ton code si tu veux, tu pourrais mettre le sort directement sur la ligne précédente.[code:1]
$complist = $ads.findall()|Sort-Object -Property path [/code:1]

Penses qu'avec le guide de reference , j'aurais plus de chance de comprendre ton code?

Euh... en fait aucune idée, je n'ai aucun boucain ! Quand j'ai commencé il y a 3 ans, il n'y avait pas encore de revue parlant de PS. J'ai appris beaucoup avec l'aide de base puis sur les sites...
Parait que le guide de référence est pas mal sinon ! ;)

N'hésite pas s'il y a des choses qui ne sont pas très clair...

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 10 mois #4632 par Francois
merci :)

pour avoir le contendu des groupes locaux , je pensais faire comme ca :

[code:1]$ldapQuery = \&quot;(&amp;(objectCategory=group)(grouptype=-2147483644))\&quot;
$de = new-object system.directoryservices.directoryentry
$ads = new-object system.directoryservices.directorysearcher -argumentlist $de,$ldapQuery
$complist = $ads.findall() | Sort-Object -Property path
foreach ($i in $complist )
{
$i|?{$_.path -match ('LDAP://(?&lt;cngroup&gt;.+?),')}|%{write-host $matches.cngroup}
$groupe = ([ADSI]\&quot;$i\&quot;«»)
$groupe.member
}[/code:1]

ou j'ai repris ce oode la :
[code:1]$groupe = ([ADSI]\&quot;LDAP://localhost/cn=mongroupe,ou=test,dc=powershell-scripting,dc=com\&quot;«»)

$groupe.member [/code:1]

Malheuresmeent , ca ne marche pas.
Ca doit venir du fait qu'il ne remplace pas la valeur de $i dans $groupe = ([ADSI]\&quot;$i\&quot;).

Mais je n'ai aucune idée :(

MERCI D AVANCE !!

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.101 secondes
Propulsé par Kunena