[PS] Revenir au début d'une variable tableau
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

[PS] Revenir au début d'une variable tableau



  1. #1
    zicdeha

    [PS] Revenir au début d'une variable tableau


    ------

    Bonjour,

    J'ai fais un script sur PowerShell ISE qui fonctionne bien mais pas jusqu'au bout.
    Pour expliquer mon problème je vais mettre le bout de code qui fait défaut :

    Code:
    foreach ($utilisateur in $utilisateur)
    {
        foreach ($calendrier in $calendrier)
        {
        Write-Host "Add-MailboxFolderPermission -Identity" $calendrier":\calendrier -user" $utilisateur "-AccessRights PublishingEditor" *>> "C:\Temp\script.txt"
        }
    }
    Concrètement pour le premier utilisateur ça passe sans problème, le balayage des calendriers se fait bien.
    Par contre et c'est là mon problème, dès que ça passe sur un autre utilisateur, la boucle foreach étant déjà à la fin de la variable calendrier il me fait la ligne uniquement avec le dernier calendrier et pas ceux d'avant.
    Ma question est donc, comment faire pour que le foreach avec les calendriers reparte depuis le début ? Ou alors quelle intrication de boucle me conseillez-vous ?

    Bonne journée.

    -----

  2. #2
    Paraboloide_Hyperbolique

    Re : [PS] Revenir au début d'une variable tableau

    Bonjour,

    Je ne connais pas bien les scripts PowerShell, cependant les arguments des "foreach" m'interpellent. Par exemple pour le premier, êtes vous sûr qu'il faille écrire:

    [CODE]foreach ($utilisateur in $utilisateur)[CODE]

    au lieu de (par exemple):

    [CODE]foreach ($utilisateur_courant in $utilisateur)[CODE]

    Même chose pour votre second "foreach".

  3. #3
    zicdeha

    Re : [PS] Revenir au début d'une variable tableau

    Bonjour,

    Mon problème est désormais résolu, j'aurai du m'écouter avant de poster mais qu'importe.
    Vous avez totalement raison, un foreach ne s'utilise pas comme ça (voir même pas du tout). Je n'ai pas précisé que c'était un tableau, vu que le code montré était pas complet ... Sauf que je dois être un dès rare a faire cette méthode qui permet de s'affranchir de variable ou de tableau supplémentaires vu que le foreach va balayer chaque valeur du tableau.

    Pour résoudre le problème j'ai créé une variable supplémentaire ($memory_calendrier) et j'ai fait une sorte de "réinitialisation" de la variable en remettant cette variable dans la $calendrier. Du coup le foreach (toujours mal utilisé certes) va recommencer de zero comme si c'était une autre variable.

    Code:
    $memory_calendrier = $calendrier
    foreach ($utilisateur in $utilisateur)
    {
        foreach ($calendrier in $calendrier)
        {
        Write-Host "Add-MailboxFolderPermission -Identity" $calendrier":\calendrier -user" $utilisateur "-AccessRights PublishingEditor" *>> "C:\Temp\script.txt"
        }
    $calendrier = $memory_calendrier
    }
    Et en faisant ca, ca roule du tonnerre !
    Merci de vous être penché sur la demande.

    Bonne journée.

  4. #4
    Paraboloide_Hyperbolique

    Re : [PS] Revenir au début d'une variable tableau

    Bonsoir,

    A votre place, je n'écrirais pas comme cela (le code que je vous ais proposé ne fonctionne pas ?)

    Je pense qu'un codeur trouverais cela très moche. Duplication d'un tableau et recopie intégrale dans une boucle: c'est pas top, surtout si on peut l'éviter.

    De plus, le problème que vous avez rencontré pour la variable "calendrier" persiste pour la variable "utilisateur". Un futur bug en puissance ?

  5. A voir en vidéo sur Futura
  6. #5
    Ikhar84
    Animateur Informatique

    Re : [PS] Revenir au début d'une variable tableau

    Salut, l'explication était la bonne mais n'a pas été comprise !

    Dans l'expression de ton foreach, chaque élement de ton tableau porte le même nom que le tableau lui même, donc tu écrases la réference du tableau par le premier element du tableau, en toute logique, tu ne devrais même acceder qu'au premier élement de chacun de tes deux tableaux, et même si ce n'est pas le cas, dans tes tests, cela arrivera...

    La seule solution appliquable est de donner deux noms se variables différentes dans chacun de tes foreach...

    Sous reserve que le code donné soit bon:
    Code:
    foreach ($utilisateur_courant in $utilisateur) {
         foreach ($calendrier_courant in $calendrier) {
              Write-Host "Add-MailboxFolderPermission -Identity" $calendrier_courant":\calendrier -user" $utilisateur_courant "-AccessRights PublishingEditor" *>> "C:\Temp\script.txt" }
          }
    }
    Ta "correction" est bancale est se contente de mettre de côté une réference sur le tableau pour y reaffecter ta variable calendrier après le traitement. Mais rien pendant le traitement...

    Ceci étant dit, sans plus d'infos, je ne comprends pas le besoin d'imbriquer les deux foreach...
    Dernière modification par Ikhar84 ; 04/07/2019 à 21h28.
    J'ai glissé Chef !

Discussions similaires

  1. Le début du début d'un début de quelque chose (m31)
    Par babelibue dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 9
    Dernier message: 30/08/2016, 20h37
  2. supprimer le début d'un variable dans un .bat
    Par Neilmine dans le forum Programmation et langages, Algorithmique
    Réponses: 6
    Dernier message: 15/06/2015, 14h37
  3. Transformer un tableau entier contenant des 1 et des 0 en une variable binaire
    Par Aurelsam dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 29/07/2013, 09h57
  4. Intterruption et revenir au DEBUT du programme ?
    Par invite068e61d4 dans le forum Électronique
    Réponses: 5
    Dernier message: 01/06/2009, 00h08
  5. tableau variable sous calc
    Par kelso dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 25/11/2007, 01h03