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 :

IF exécuté à tort [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 23
    Points : 15
    Points
    15
    Par défaut IF exécuté à tort
    Bonjour à tous,

    Je viens vers vous car je sèche...
    Je rencontre un problème avec les tests d'une condition IF : en effet, le code est exécuté alors que ma condition n'est pas remplie.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    import-module ActiveDirectory
    $ad_properties = $null
    $matricule = "S12345"
    $serveur = "NOM_SERVEUR.aaaaa.bbbbb-ccccc.fr"
    $ad_properties = get-aduser $matricule -properties * -server $serveur
    write-host "Vérification 1 :" $ad_properties.Enabled
    if(($ad_properties.Enabled -eq 'True') -or ($ad_properties.Enabled -eq 'False'))
    	{
    		write-host "Vérification 2 :" $ad_properties.Enabled
    		if($ad_properties.Enabled -eq 'True')
    			{
    				write-host "Le compte $matricule est actif"										
    			}
    		write-host "Vérification 3 :" $ad_properties.Enabled							
    		if($ad_properties.Enabled -eq 'False')
    			{
    				write-host "Le compte $matricule est inactif"									
    			}
    
    	}
    # Sinon...
    else
    	{
    		write-host "Vérification 4 :" $ad_properties.Enabled
    		write-host "Erreur avec le compte $matricule"
    	}
    Et voici le résultat que j'obtiens à l'exécution de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    VAcrification 1 : True
    VAcrification 2 : True
    Le compte S12345 est actif
    VAcrification 3 : True
    Le compte S12345 est inactif
    Et voici le résultat que j'obtiens :
    Ma variable "$ad_properties.Enabled" contient la valeur "TRUE", donc normalement le troisième IF ne devrait pas s'exécuté ?
    Savez-vous pourquoi j'obtiens cet bizarrerie ?

    En cas de besoin je mis en pièce jointe le contenu de ma variable "$ad_properties" que j'ai anonymisé.

    Merci pour votre aide.

    Guillaume
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    avant tout vérifie le type des objets/propriété que tu testes.
    L'opérateur -EQ peut traiter des tableaux.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Laurent Dardenne Voir le message
    Salut,
    avant tout vérifie le type des objets/propriété que tu testes.
    L'opérateur -EQ peut traiter des tableaux.
    Merci de te pencher sur mon problème.

    Voici les types de mes variables:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    PS C:\> $ad_properties.GetType()
    IsPublic     IsSerial      Name              BaseType
    --------     --------       ----                  --------
    True         False         ADUser            Microsoft.ActiveDirectory.Management.ADAccount
    
    PS C:\> $ad_properties.Enabled.GetType()
    IsPublic     IsSerial      Name              BaseType
    --------     --------       ----                  --------
    True         True         Boolean             System.ValueType

    Je viens d'essayé de changer mes IF comme ceci, mais toujours le même problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    (...)
    if($ad_properties.Enabled -eq $TRUE)
    (...)
    if($ad_properties.Enabled -eq $FALSE)
    (...)

  4. #4
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Je viens de faire un test on ne peux plus simple dans mon AD :
    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $usr = get-aduser toto -Properties *
    if($usr.Enabled) { Write-Host 'True' }
    if(!$usr.Enabled) { Write-Host 'False' }

    J'ai bien le résultat attendu....

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    J'ai oublié de changé 'True' et 'False' par '$TRUE' et '$FALSE' dans mon code.
    C'est maintenant fait et en effet j'ai plus de problème....


    Merci à tous.

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

Discussions similaires

  1. [ArchiveBuilder][JavaMail] exécution impossible...
    Par Gorthal dans le forum JBuilder
    Réponses: 7
    Dernier message: 10/01/2003, 09h12
  2. [TTHREAD] ne termine pas sont exécution
    Par Bbenj dans le forum Langage
    Réponses: 4
    Dernier message: 02/08/2002, 16h42
  3. Exécution indivisible (accès conccurent)
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 3
    Dernier message: 23/07/2002, 08h09
  4. Compression d'exécutables
    Par Atrebate62 dans le forum Windows
    Réponses: 3
    Dernier message: 21/07/2002, 16h39
  5. Réponses: 2
    Dernier message: 06/07/2002, 12h36

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