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 :

Problème de boucle Do Until


Sujet :

Scripts/Batch

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 201
    Points : 143
    Points
    143
    Par défaut Problème de boucle Do Until
    Bonjour,
    Je débute en PowerShell. Je lance une commande de création d'utilisateur, et comme la création met un peu de temps à se faire, je cherche à vérifier que le compte existe pour continuer.
    Voici la portion de code correspondante :

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	Do{
    		#On vérifie si l'utilisateur existe
    		$Select_user = Get-MsolUser -UserPrincipalName "$UserDisplayName" #-Erroraction 'silentlycontinue'
    		$Select_user_count = ($Select_user | Select-String .).Count #Nombre de résultats
     
    		} 
     
    	} Until(($Select_user_count -eq 1))

    Quand je tape les commandes dans la console, mon $Select_user_count est bien à 1 quand l'utilisateur existe et à 0 dans le cas contraire. Le problème est que le script boucle et la variable reste à 0 même lorsque le compte utilisateur est bien créé (vérifié depuis une autre console). Y'a-t'il une erreur dans mon code ou une spécificité dans PowerShell qui fait que la variable garde sa valeur d'origine ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    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 177
    Points : 5 738
    Points
    5 738
    Par défaut
    Je ne comprend pas ton problème de boucle.
    Voici comment je vérifiais la présence d'un compte.

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    $UserExist = (Get-MsolUser -UserPrincipalName $UserDisplayName -ErrorAction SilentlyContinue) -ne $null

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 201
    Points : 143
    Points
    143
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Je ne comprend pas ton problème de boucle.[/CODE]
    Le problème est que la boucle ne s'arrête pas quand elle devrait. La variable $Select_user_count reste à 0, comme si l'utilisateur n'existait pas. Je vais tester cette syntaxe demain.

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    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 177
    Points : 5 738
    Points
    5 738
    Par défaut
    Pas de spécificité mais un problème de logique je pense

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Do
    {
        $sec = (get-date).Second
        $sec
        Start-Sleep -Seconds 1
    } 
    Until($sec -eq 5)

  5. #5
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 201
    Points : 143
    Points
    143
    Par défaut
    Peux tu expliciter le problème de logique ? J'ai beau regarder, je ne vois pas

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    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 177
    Points : 5 738
    Points
    5 738
    Par défaut
    Peux tu expliciter le problème de logique ? J'ai beau regarder, je ne vois pas
    Tu lui dit de vérifie qu'un utilisateur existe tant qu'il n'existe pas.
    C'est quoi l’intérêt ? Plus tu vérifie et plus tu as de chance qu'il soit créé ?


    Ceci est étrange ($Select_user | Select-String .).Count.
    Préfère cette syntaxe pour compter le nombre d’élément @($Select_user).Count

  7. #7
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 201
    Points : 143
    Points
    143
    Par défaut
    Tu lui dit de vérifie qu'un utilisateur existe tant qu'il n'existe pas.
    C'est quoi l’intérêt ? Plus tu vérifie et plus tu as de chance qu'il soit créé ?
    L'intérêt est que la commande de création n'est pas effective immédiatement, et mes commandes suivantes échouent. Donc soit je fais une bête pause de 5 minutes sans rien vérifier, et je prends le risque d'avoir des erreurs si la création dure plus longtemps et de perdre 5 minutes par création (pour 30 users, ça commence à devenir significatif ), soit je vérifie s'il existe avant de lancer la suite et j'évite ainsi les erreurs et la perte de temps. Et pour éviter une boucle infinie ou trop longue, je fais une sortie forcée au bout de 5 minutes. Ce n'est pas si illogique que ça.

  8. #8
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    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 177
    Points : 5 738
    Points
    5 738
    Par défaut
    Tu veux lui faire quoi au compte créé après ?

    https://arstechnica.com/civis/viewtopic.php?t=1253611

  9. #9
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 201
    Points : 143
    Points
    143
    Par défaut
    Tu veux lui faire quoi au compte créé après ?
    Je le supprime

    Je modifie des paramètres par défaut, qui ne sont pas modifiables lors de la création (fuseau horaire, rétention des messages supprimés, ...). J'ai regardé le lien que tu m'as donné, l'auteur utilise la même logique que moi, donc je n'étais pas dans l'erreur avec ce raisonnement.

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    do {
           $CheckIfUserAccountExists = Get-MsolUser -UserPrincipalName $email -ErrorAction SilentlyContinue
           Write-Host "Checking if account has been created yet"
           Sleep 15
    }
    While ($CheckIfUserAccountExists -eq $Null)

    Je vais me baser dessus pour adapter le mien. Merci.

  10. #10
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Points : 520
    Points
    520
    Par défaut
    salut les eric

    vos logiques sont bonnes pour chacun de vos raisonnements !

    eric41 tu a été trop loin dans la logique en comptant le nombre de réponse de Get-MsolUser alors que tu cherche a savoir si tu des réponse ou aucune !
    c'est ce que fait gusgizmo avec $CheckIfUserAccountExists -eq $Null il test si il y a un résultat ou pas

    bonne journée

Discussions similaires

  1. [XL-2010] VBA problème avec une boucle do until
    Par tetro27 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/08/2016, 16h22
  2. Boucle while until EOF et .csv : problème
    Par Karshick dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 01/10/2014, 18h49
  3. [Débutant] Problème boucle Do Until Action Loop
    Par VBLB35 dans le forum VB.NET
    Réponses: 8
    Dernier message: 02/08/2013, 13h04
  4. Nouveau problème à la boucle "Do-Loop Until"
    Par My_DiDi dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 29/05/2009, 15h47
  5. Problème de boucle
    Par basclln dans le forum C++
    Réponses: 19
    Dernier message: 02/04/2005, 10h13

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