Question
[Résolu] Combobox
- Jeulmi
- Auteur du sujet
- Hors Ligne
- Membre premium
-
- Messages : 89
- Remerciements reçus 0
J'ai comme projet de faire une interface graphique pour l'ajout de users sur l'active directory.
J'ai un domaine CONTOSO, les OU sont comme ça (je ne peut pas changer l'architecture) :
Exemple
Carrefour
-Le mans
-Boulogne
-Moneteau
...
LIDL
-Fruits
--Tomates
--Pommes
...
J'arrive a récupérer les OU de premier niveau avec la fonction combobox :
[code:1]function Load-ComboBox
{
Param (
[Parameter(Mandatory=$true)]
[System.Windows.Forms.ComboBox]$ComboBox,
[Parameter(Mandatory=$true)]
$Items,
[Parameter(Mandatory=$false)]
[string]$DisplayMember,
[switch]$Append
)
if(-not $Append)
{
$comboBox.Items.Clear()
}
if($Items -is [Array])
{
$comboBox.Items.AddRange($Items)
}
else
{
$comboBox.Items.Add($Items)
}
$comboBox.DisplayMember = $DisplayMember
}
Load-ComboBox $combobox1 (Get-ADOrganizationalUnit -searchScope Onelevel -Filter * ) -DisplayMember \"Name\"[/code:1]
Par contre comment récupérer la valeur qui sera sélectionner dans BU pour qu'il me donne les OU de la valeur Ville ?
J'ai essayé ça mais ça ne fonctionne pas :
[code:1]Load-ComboBox $combobox2 (Get-ADOrganizationalUnit -searchbase \"OU=$combobox1.selecteditem,DC=CONTOSO,DC=FR\" -filter *) -DisplayMember \"Name\"[/code:1]
Merci pour votre aide
Message édité par: SpunkZ, à: 3/09/15 21:41<br><br>Message édité par: Arnaud, à: 15/10/15 10:00
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 69
tu peux implémenter une relation maître/détails . Une fois l'OU maître sélectionné, il faut lier la liste des OU associées dans le combo 'détails'. Et pour celles-ci soit tu les construits toutes avant l'affichage du GUI soit au fur et à mesure.
Tu devrais d'abord testé ceci en mode console, par exemple avec une hashtable :
[code:1]$ListeOU=@{}
$ListeOU.Carrefour=@{'Le mans','Boulogne', etc}
$ListeOU.OU2=@{etc}[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 4/09/15 08:54
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Jeulmi
- Auteur du sujet
- Hors Ligne
- Membre premium
-
- Messages : 89
- Remerciements reçus 0
Pour récupérer la valeur combobox j'ai trouvé :
[code:1]$Combobox3_SV_SelectedIndexChanged={
$OU = \"$($combobox3_SV.SelectedItem)\"
write-host \"$OU\"
Load-ComboBox $Combobox4_SV (Get-ADOrganizationalUnit -searchbase $($Combobox3_SV.selecteditem) -filter * -searchscope 1 ) -DisplayMember \"Name\"
}
[/code:1]
J'ai bien la combobox qui se rempli avec les OU.
Quand je veut créer un utilisateur en prenant la valeur $OU (la valeur $OU a été tester) :
New-ADUser -Name $login -SamAccountName $login -UserPrincipalName $upn -DisplayName $Detailedname -GivenName $givenName -Surname $Surname -Description $Description -AccountPassword (ConvertTo-SecureString $Password -AsPlainText -Force) -Enabled $true -ChangePasswordAtLogon $true -Path $OU
New-ADUser : Impossible de valider l'argument sur le paramètre «Path». L’argument est Null ou vide. Indiquez un argument qui n’est pas
Null ou vide et réessayez.
A chaque modification d'une combobox la variable $OU change.
Cela fonctionne sur le labo que j'ai fait chez moi
Par contre chez moi je fais ça directement sur le serveur, au boulot je fais ça a partir de mon poste
J'ai remplacé $ou par le chemin de l'ou (en dur) ça fonctionne.
La pièce jointe Creation_compte.ps1 est absente ou indisponible
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- Jeulmi
- Auteur du sujet
- Hors Ligne
- Membre premium
-
- Messages : 89
- Remerciements reçus 0
Bon j'ai pu tester au boulot :
- De mon poste :
[code:1]New-ADUser : Impossible de valider l'argument sur le paramètre «Path». L’argument est Null ou vide. Indiquez un argument qui n’est pas
Null ou vide et réessayez.[/code:1]
- Du serveur pas de problème !
Me suis dit c'est grave je vais utilisé winrm mais... ça prends pas en charge les boites de dialogue modale
J'ai utilisé psexec même message cité plus haut.
Une idée ??
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 69
SpunkZ écrit:
Affiche la ligne d'appel avec write-warning, le pb ne semble pas être dans l'appel du cmdlet mais dans ton code.Une idée ??
En passant, dans Load-ComboBox tu peux tester une collection ainsi :
[code:1]function isCollection {
param($Object)
$Object -is [System.Collections.IEnumerable] -and $Object -isnot [String]
}#isCollection[/code:1]
Ton paramètre Items n'étant pas typé, tu peux y passer n'importe quel objet.
As-tu la même version de PS sur les deux machines ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Jeulmi
- Auteur du sujet
- Hors Ligne
- Membre premium
-
- Messages : 89
- Remerciements reçus 0
[code:1]function isCollection {
param($Object)
$Object -is [System.Collections.IEnumerable] -and $Object -isnot [String]
}#isCollection[/code:1]
Je met ça après ma combobox ? et je remplace $object par ma variable $OU ? et ensuite ça donnera
[code:1]Write-warning $OU[/code:1]
Merci pour ton aide
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Combobox