IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Recherche utilisateur powershell graphique [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Octobre 2016
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2016
    Messages : 65
    Points : 49
    Points
    49
    Par défaut Recherche utilisateur powershell graphique
    Bonjour,

    Dans le cadre de mon script powershell, qui actuellement a une interface graphique pour me permettre de gérer l'AD, j'ai un onglet pour la recherche d'utilisateurs/ordinateurs mais la recherche n'est pas fonctionnelle.

    J'utilise actuellement la commande suivante pour la recherche :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-ADObject -Filter {Name -like "*uc*"} | Select Name,DistinguishedName

    Ce code fonctionne parfaitement sauf si le nom recherché est stocké dans une variable.
    Comme dit au début j'utilise une interface graphique donc le nom recherché sera stocké dans la textbox : $txt_rech_nameobj.Text
    Mais dès que je remplace le "*uc*" par "*$txt_rech_nameobj.Text*" , aucun utilisateur apparait.

    Même en intégrant la variable $txt_rech_nameobj.Text dans une autre variable, aucun changement.

    Merci par avance pour votre aide et bonne journée

    Alexis

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 183
    Points : 5 754
    Points
    5 754
    Par défaut
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $motif = "*" + $txt_rech_nameobj.Text + "*"
    # Que vaut $motif à ce moment ?
    Get-ADObject -Filter {Name -like $motif} | Select Name, DistinguishedName

  3. #3
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Octobre 2016
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2016
    Messages : 65
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $motif = "*" + $txt_rech_nameobj.Text + "*"
    # Que vaut $motif à ce moment ?
    Get-ADObject -Filter {Name -like $motif} | Select Name, DistinguishedName
    Bonjour,

    Le $motif correspond à ma textbox qui contiendra un bout du nom de l'utilisateur (je ne sais pas si c'est cette réponse que tu attend).

    Je viens de tester ton code et ça fonctionne parfaitement sauf que la sortie de la commande (qui écrit le résultat dans une listbox) est sous la forme @{Name...}. Du coup j'ai changer le code en :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-ADObject -Filter {Name -like $motif} | Select -exp DistinguishedName

    Sauf qu'à ce niveau la, nouveau problème :
    S'il y a deux utilisateurs correspondant, quand j'effectue la recherche, le résultat qui s'affiche dans ma listbox est :
    Tableau de Object[]

    Voila le bout du code qui je pense est fautif :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    }elseif($rd_rech_user.checked){
    $commandeuser = Get-ADObject -Filter {Name -like $motif} | Select Name, DistinguishedName
    	IF($commandeuser -eq $null){
    		$lst_rech.Items.Clear()
    		$lst_rech.Items.ADD("Aucun utilisateur avec ce nom trouvé sur le serveur : " + $Combo_rech_srv.Text)
    	}Else{
    		$lst_rech.Items.Clear()
    		$lst_rech.Items.Add($commandeuser)
    	}

    $lst_rech c'est ma listbox

    Donc si le résultat de la commande est nul, j'ai un message dans la listbox, aucun problème, si j'ai un utilisateur qui correspond à la recherche, aucun problème également mais si j'ai minimum deux utilisateurs correspondant, l'erreur survient.
    Il faudrait seulement que lorsqu'il y a plusieurs correspondance dans la recherche que pour chaque utilisateur, une ligne soit sauté dans la listbox.

    Au passage, dans la commande Get-ADObject je ne peux pas préciser que je recherche juste un ordinateur ou juste un utilisateur ?

    Merci pour votre aide et bonne journée

    Alexis

  4. #4
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Octobre 2016
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2016
    Messages : 65
    Points : 49
    Points
    49
    Par défaut
    J'ai trouvé ma réponse, il suffit d'ajouter une boucle...

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    }elseif($rd_rech_user.checked){
    $commandeuser = Get-ADObject -Filter {Name -like $motif} | Select Name, DistinguishedName
    	IF($commandeuser -eq $null){
    		$lst_rech.Items.Clear()
    		$lst_rech.Items.ADD("Aucun utilisateur avec ce nom trouvé sur le serveur : " + $Combo_rech_srv.Text)
    	}Else{
                    $lst_rech.Items.Clear()
                    foreach($resultat in $commandeuser){
                  		$lst_rech.Items.Add($commandeuser)
            }
    	}

    Merci de votre aide.

    Alexis

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 183
    Points : 5 754
    Points
    5 754
    Par défaut
    Si tu souhaite uniquement des ordinateurs ou des utilisateurs tu as deux commandes correspondantes :
    Get-ADComputer
    Get-ADUser

    Si tu souhaites conserver la commande Get-ADObject ajoute le bon critère dans ton filtre :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    -and ObjectClass -eq "Computer"
    -and ObjectClass -eq "User"


    Pour l'ajout dans une ListBox il y a plusieurs façon de faire.
    ListBox.Add() n'ajoute qu'une entrée, il faudra le faire autant de fois que tu as d'entrée.
    Une autres proposition pour diversifiée :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    $commandeuser | ForEach-Object {$lst_rech.Items.Add($_)}
    Il faut savoir qu'une ListBox permet d'ajouter plusieurs éléments avec la méthode AddRange()

  6. #6
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Octobre 2016
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2016
    Messages : 65
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    J'avais eu des problèmes avec les commandes :
    Get-ADComputer
    Get-ADUser
    Par rapport à ma textbox mais c'est vrai que je peut maintenant les réutiliser

    Sinon j'utilise bien le filtre ObjectClass mais j'ai trouvé un problème avec :
    Si je met ObjectClass = "Computer" j'ai bien uniquement les ordinateurs qui s'affichent mais si je met ObjectClass = "User" j'ai les utilisateurs et les ordinateurs qui s'affichent.... Donc pour régler le problème, j'utilise le filtre ObjectCategory = "Computer" et ObjectCategory = "User" qui fonctionne très bien.

    Pour l'ajout dans ma listbox, c'est vrai que votre code est plus léger. Je viens de tester la méthode AddRange() et ça fonctionne aussi. Je pense que pour éviter au mieux les erreurs, une boucle c'est mieux.

    Du coup je vais retenter l'utilisation de Get-ADComputer et Get-ADUser.

    Merci beaucoup pour votre aide.

    Alexis

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Recherche] Librairie pour graphique
    Par Crayon dans le forum Visual C++
    Réponses: 8
    Dernier message: 14/04/2007, 14h20
  2. Recherche de composants graphiques
    Par Flow_75 dans le forum C++Builder
    Réponses: 4
    Dernier message: 17/03/2007, 10h23
  3. Plugin Generateur Code & Recherche Utilisateur/Developpeur
    Par azerr dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 07/06/2006, 17h12
  4. Je recherche des boutons graphique de navigation
    Par christel1982 dans le forum Imagerie
    Réponses: 5
    Dernier message: 29/05/2006, 10h01
  5. [JSP] recherche un éditeur graphique ou pas de jsp
    Par questionneuse dans le forum Servlets/JSP
    Réponses: 16
    Dernier message: 02/05/2006, 14h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo