Question Doublons générés lors du traitement import AD

Plus d'informations
il y a 2 ans 8 mois - il y a 2 ans 8 mois #31314 par ericlm128
Je ferais ceci maintenant
$SAM = Remove-DiacriticsAndSpaces -inputString $SAM
$SAM = $SAM.SubString(0, [Math]::Min(19, $SAM.length))

if ($AD_SAM -contains $SAM)
{
    for ($i = 1 ; ; $i++)
    {
        $SAMtmp = $SAM.SubString(0, [Math]::Min(19 - $i.ToString().Length, $SAM.length)) + $i.ToString()

        if ($AD_SAM -notcontains $SAMtmp)
        {
            $SAM = $SAMtmp
            break
        }
    }
}
$AD_SAM += $SAM
Dernière édition: il y a 2 ans 8 mois par ericlm128.
Les utilisateur(s) suivant ont remercié: witness

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 7 mois - il y a 2 ans 7 mois #31315 par witness
$SAM = Remove-DiacriticsAndSpaces -inputString $SAM
$SAM = $SAM.SubString(0, [Math]::Min(19, $SAM.length))

#1 if ($AD_SAM -contains $SAM)
#2 {
#3    for ($i = 1 ; ; $i++)
#4     {
#5         $SAMtmp = $SAM.SubString(0, [Math]::Min(19 - $i.ToString().Length, $SAM.length)) + $i.ToString()
#6
#7        if ($AD_SAM -notcontains $SAMtmp)
#8         {
#9             $SAM = $SAMtmp
#10            break
#11        }
#12    }
#13 }
#14 $AD_SAM += $SAM

#1 On vérifie si le login existe déjà dans l'AD: Si non, on passe à la ligne #14
#3 Boucle For avec valeur initiale de 1 et incrément de 1 à chaque comptage
#5 Création d'une variable temporaire $SAMtmp contenant $SAM sur laquelle on applique la méthode SubString afin d'extraire une partie de la chaine. SubString commence à la position 0 donc au début, on utilise la class Math avec la méthode MIN afin de sélectionner la valeur la plus petite entre (19 - la longueur de $i) et $SAM, puis on ajoute la valeur de $i afin d'avoir le bon chiffre à la fin de la chaine (peu probable que ça aille au delà de 9 les doublons, mais si tel est le cas, c'est prévu car la longueur de $i sera de 2, donc 19-2).
#7 Condition If afin de vérifier si la valeur de $SAMtmp n'est pas déjà contenue dans l'AD:
Si elle ne l'est pas: l'instruction #9 est exécutée et $SAM prend la valeur de $SAMtmp;
#10 J'imagine que break vient mettre fin au If de la ligne #1 ? Malgré qu'il soit positionné dans les accolades du If de la ligne #7 ?
#14 On vient ajouté le nouveau login dans la liste en mémoire contenant l'import initial des logins AD afin d'éviter un nouveau doublon si les mêmes conditions se représentent.

Mon interprétation est correcte ?

Dernière édition: il y a 2 ans 7 mois par witness.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 7 mois #31316 par witness
Dans cette ligne
$SAMtmp = $SAM.SubString(0, [Math]::Min(19 - $i.ToString().Length, $SAM.length)) + $i.ToString()

Pourquoi as-tu mis ToString à la variable $i ?

Pour rendre le type de cette variable compatible avec ce qui vient avant dans le login puisque c'est du texte ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 7 mois #31317 par ericlm128

#10 J'imagine que break vient mettre fin au If de la ligne #1 ? Malgré qu'il soit positionné dans les accolades du If de la ligne #7 ?

C'est pour quitter la boucle for

Pourquoi as-tu mis ToString à la variable $i ?

Par habitude, pour éviter que ton utilisateur qui se nomme "1" devienne 2 par exemple.
On veux concaténer des chaines de caractères, autant lui dire de façon explicite pour éviter des erreurs de comportement.

 

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 7 mois #31318 par witness

#10 J'imagine que break vient mettre fin au If de la ligne #1 ? Malgré qu'il soit positionné dans les accolades du If de la ligne #7 ?

C'est pour quitter la boucle for

Pourquoi as-tu mis ToString à la variable $i ?

Par habitude, pour éviter que ton utilisateur qui se nomme "1" devienne 2 par exemple.
On veux concaténer des chaines de caractères, autant lui dire de façon explicite pour éviter des erreurs de comportement.


 

Je pensais que si break était rattaché à l'instruction If de #7 (accolades), il ne pouvait pas interagir avec une entité de niveau supérieur, comme le For #3
Donc break ne s'applique implicitement qu'à une boucle For lorsqu'il est contenu dans son code, peu importe comment il est placé ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 7 mois #31319 par ericlm128
Afin que je ne te dise pas de sottise je te laisse lire la documentation officiel elle est assez ludique
docs.microsoft.com/fr-fr/powershell/modu...?view=powershell-7.1
Les utilisateur(s) suivant ont remercié: witness

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.098 secondes
Propulsé par Kunena