Question [Résolu]récupération des groupes

Plus d'informations
il y a 15 ans 3 mois #8171 par olivia
Bonjour,

j'ai un problème...
J'arrive à récupèree le listing des groupes existants via une listbox
En récupérant seulement le nom des groupes par contre quand je veux intégré un utilisateur a un groupe , j'ai une erreur car j'arrive pas à récupérer la valeur complète permettant la connection au groupe sélectionné via la listbox.

voici un morceau de mon code:
###################################################
###fonction décomposition pour récuperer juste le nom ###
function decomp($chaine){
$fin=$chaine.IndexOf(\",\")
$debut=$chaine.IndexOf(\"=\")+1
$chaine=$chaine.Substring($debut,$($fin-$debut))
return $chaine
}
###################################################
###fonction permettant de remplir listbox Groupe###
function listgroup{
#requête sur l'object group
$reqgroupe = \"(&(objectCategory=group))\"
#connexion à l'active directory
$connect = [ADSI]\"LDAP://dc=$domain,dc=$zone\"
#création de l'objet permettant de chercher dans l'AD
$search = new-object system.directoryservices.directorysearcher $connect,$reqgroupe
#listing de l'AD selon la requête demandé
$groupelist = $search.findall()
# boucle pour parcourir les groupes de l'AD
foreach ($i in $groupelist)
{
$cpt++
# recupère seulement les noms des groupes
$groupe=decomp($i.path)
$val = $i.path # recuperer valeur complete ss forme \"ldap://...\"
#liste les groupes dans la listebox groupe
$listboxgroupe.items.add($groupe)| Out-Null
}
}
#

#
via le code qui liste les groupes de l'aad, par contre je sais par comment récupérer la valeur complète des groupes séléctionnés me permettant de créer des groupes
Je sais que la fonction $listboxgroupe.selecteditems me récupère les valeurs affichés de la listebox , est il possible d'avoir dans les attributs de la listboc une option qui nous permettant d'avoir une nom affiché et sa valeur lié

merci d'avance

sam87<br><br>Message édité par: sam87, à: 17/12/10 09:35

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

Plus d'informations
il y a 15 ans 3 mois #8173 par Jacques Barathon
Pour intégrer un utilisateur donné à chacun des groupes présents dans ton domaine, tu peux utiliser le code suivant :

[code:1]
#connexion à l'active directory
$connect = [ADSI]\&quot;LDAP://dc=$domain,dc=$zone\&quot;

#création de l'objet permettant de chercher dans l'AD
$search = new-object system.directoryservices.directorysearcher $connect

# requête sur l'object Group
$search.filter = \&quot;(objectCategory=group)\&quot;
$groupelist = $search.FindAll()

# requête sur l'objet User dont le samAccountName est sam87
$search.filter = \&quot;(&amp;(objectCategory=User)(samaccountname=sam87))\&quot;
$user = $search.FindOne()

foreach ($groupe in $groupelist)
{
$adgroup = [ADSI]$groupe.Path
$adgroup.Add($user)
}
[/code:1]

Est-ce que ça répond à ta question ?

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

Plus d'informations
il y a 15 ans 3 mois #8174 par olivia
Réponse de olivia sur le sujet Re:récupération des groupes
Merci de ta réponse mais non en fait je cherche à adhéré un utilisateur précédement crée a un groupe .

Mais le problème n'est pas l'adhésion a un groupe mais plutôt à trouver un moyen car je sélectionne un groupe dans la listebox \&quot;helpgroupe\&quot; . Je récupère bien les les groupes sélectionnés mais mon problème est que je cherche une solution pour lié \&quot;helpgroupe\&quot; par exemple à ca valeur complète : ldap://cn=helpgroupe....\&quot;
pour me permettre d'adhéré au groupes sélectionné

olivia

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

Plus d'informations
il y a 15 ans 3 mois #8176 par Jacques Barathon
Ok, je vois. Tu peux :

- Créer une CheckedListBox
- Lui passer la liste des groupes (en filtrant la liste sur la propriété name pour un affichage clair)
- En sortie, récupérer les CheckedIndices de la listbox qui pointeront sur les éléments de la liste de départ

Voici un bout de code qui illustre ça :

[code:1]
$adds = [ADSI]''
$searcher = new-object DirectoryServices.DirectorySearcher $adds
$searcher.Filter = \&quot;(objectCategory=Group)\&quot;
$GroupList = $searcher.FindAll()

Add-Type -Assembly System.Windows.Forms

$form = new-object Windows.Forms.Form
$form.Size = new-object Drawing.Size @(400,500)
$form.Text = \&quot;Sélectionnez les groupes de votre choix\&quot;

$listbox = new-object Windows.Forms.CheckedListBox
$listbox.CheckOnClick = $true
$listbox.Dock = \&quot;Fill\&quot;
$listBox.Items.AddRange($($GroupList | foreach {$_.properties.name}))

$buttonPanel = new-object Windows.Forms.Panel
$buttonPanel.Size = new-object Drawing.Size @(400,30)
$buttonPanel.Dock = \&quot;Bottom\&quot;

$cancelButton = new-object Windows.Forms.Button
$cancelButton.Text = \&quot;Annuler\&quot;
$cancelButton.DialogResult = \&quot;Cancel\&quot;
$cancelButton.Top = $buttonPanel.Height - $cancelButton.Height - 5
$cancelButton.Left = $buttonPanel.Width - $cancelButton.Width - 10
$cancelButton.Anchor = \&quot;Right\&quot;

$okButton = new-object Windows.Forms.Button
$okButton.Text = \&quot;Ok\&quot;
$okButton.DialogResult = \&quot;Ok\&quot;
$okButton.Top = $cancelButton.Top
$okButton.Left = $cancelButton.Left - $okButton.Width - 5
$okButton.Anchor = \&quot;Right\&quot;

$buttonPanel.Controls.Add($okButton)
$buttonPanel.Controls.Add($cancelButton)

$form.Controls.Add($listBox)
$form.Controls.Add($buttonPanel)
$form.AcceptButton = $okButton
$form.CancelButton = $cancelButton
$form.Add_Shown( { $form.Activate() } )

$result = $form.ShowDialog()

if($result -eq \&quot;Ok\&quot;«»)
{
$GroupSelection = @()
foreach($index in $listBox.CheckedIndices)
{
$GroupSelection += $GroupList[$index]
}
$GroupSelection
}
[/code:1]

En fin de code, $GroupSelection contient les groupes sélectionnés. Ce sont bien les objets AD, pas seulement les noms des groupes. Tu peux alors accéder à leur propriété Path.

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

Plus d'informations
il y a 15 ans 3 mois #8177 par olivia
Réponse de olivia sur le sujet Re:récupération des groupes
Je te remercies c'est oki par contre peut être une erreur de ma part , mais quand je fais $groupselection.path celui-ci ne m'affiche rien !!!


Olivia

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

Plus d'informations
il y a 15 ans 3 mois #8179 par olivia
Réponse de olivia sur le sujet Re:récupération des groupes
J'ai réussi à récupérer les valeurs
Mais toujours un problème, je n'arrives pas à me connecter sur le(s) groupe(s) choisi(s).

#récupérer la valeur de connection
$GroupSelection += $GroupList[$index].path
$taille = $groupselection.count
$i=0
do
{
#connection à l'objet groupe
$objgrp = [ADSI] $groupeselection[$i]
#initialise la valeur de l'objet utilisateur
$utilisateur = \&quot;CN=ftadmin,ou=test,DC=test,DC=lan\&quot;
#intégration de l'utilisateur dans un ou des groupes
$objgrp.member += $utilisateur
#prise en compte de la modification de l'objet groupe dans l'AD
$objgrp.psbase.commitchanges()
$i++
}until($i -gt $taille)


le message d'erreur afiché:
le groupe 0
:
LDAP://CN=Opérateurs de configuration réseau,CN=Builtin,DC=test,DC=lan
Impossible d'indexer dans un tableau Null.
Au niveau de C:\Documents and Settings\Administrateur\Bureau\0212.ps1 : 66 Caractère : 35
+ $objgrp = [ADSI] $groupeselection[ &lt;&lt;&lt;&lt; $i]
+ CategoryInfo : InvalidOperation: (0:Int32) [], RuntimeException
+ FullyQualifiedErrorId : NullArray

La propriété « member » est introuvable sur cet objet ; assurez-vous qu'elle existe et qu'elle peut être définie.
Au niveau de C:\Documents and Settings\Administrateur\Bureau\0212.ps1 : 71 Caractère : 9
+ $objgrp. &lt;&lt;&lt;&lt; member += $utilisateur
+ CategoryInfo : InvalidOperation: (member:String) [], RuntimeException
+ FullyQualifiedErrorId : PropertyNotFound

Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
Au niveau de C:\Documents and Settings\Administrateur\Bureau\0212.ps1 : 73 Caractère : 29
+ $objgrp.psbase.commitchanges &lt;&lt;&lt;&lt; ()
+ CategoryInfo : InvalidOperation: (commitchanges:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

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

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