none
Utilisation de tabeau à taille fixe avec $newupn = $upn.UserPrincipalName.Insert (2,".") et .Remove(1,1) - La collection était d'une taille fixe RRS feed

  • Question

  • Bonjour à tous,

    je n'arrive pas à parcourir mon tableau correctement le but étant de récupérer tous les users dans un group ad local

    ajouter un point après la 2eme lettre du login par exemple montest deviendra mo.test

    dans un 2 temps, supprimer la 2eme lettre du login donc mo.test deviendra m.test

    je précise que ca fonctionne quand j'ai qu'un seul utilisateur dans le groupe AD tout fonctionne bien. 

    je passe bien de montest à m.test

    mais quand j'ajoute 1 user en plus, je reçois l'erreur "La collection était d'une taille fixe"

    j'ai essaye d'ajouter [System.Collections.ArrayList] mais idem.

    Merci pour votre aide

    $upn = Get-ADGroupMember -Identity  "mongroupe" | Get-ADUser -Properties * |  select UserPrincipalName

    ForEach-Object

    {
    $upnnew = $upn.UserPrincipalName.Insert(2,".")
    $upnremove = $upnnew.Remove(1,1)
    }

    vendredi 4 octobre 2019 13:50

Toutes les réponses

  • j'ai réussi 

    si quelqu'un peut me dire si c'est bonne pratique :) merci

    $upn = Get-ADGroupMember -Identity  "test" | Get-ADUser -Properties *
    foreach($user in $upn) {
         Set-ADUser -identity $user -UserPrincipalName $user.UserPrincipalName.Insert(2,".")
    }


    $upn = Get-ADGroupMember -Identity  "test" | Get-ADUser -Properties *
    foreach($user in $upn) {

    Set-ADUser -identity $user -UserPrincipalName $user.UserPrincipalName.Remove(1,1)

    }

    vendredi 4 octobre 2019 15:16
  • Bonjour,

    tout dépend de tes données initiales…

    L'idéal est d'avoir les zones Nom et Prénom chargées correctement, puis de créer/modifier les logins/UPN etc... à partir de ces éléments.

    A partir de ton script, ajouter le . n'est pas un problème, car cela n'ajoute pas de possibilité de doublons.

    En revanche, retirer la 2ème lettre peut entrainer des doublons, et ce risque doit être testé, tout au moins en vérifier le résultat de la commande set-ADUser correspondante.

    A+ 


    Thierry DEMAN-BARCELO. Offce Apps&Services MVP. MCSE:Messaging 2016,MCSE:Server Infrastructure 2016(87 MCPs). MCSA Office 365,Microsoft 365 Certified: Messaging Administrator Associate,Modern Desktop Administrator Associate https://base.faqexchange.info

    samedi 5 octobre 2019 15:06
  • C'est là que les expressions régulières sont les plus appropriées.

    $upn = Get-ADGroupMember -Identity  "test" | Get-ADUser -Properties *
    foreach($user in $upn) {
         Set-ADUser -identity $user -UserPrincipalName ($user.UserPrincipalName -replace "^(.).(.*)$" , '$1.$2')
    }

    Et comme déjà dit, attention aux doublons.

    B.

    mardi 8 octobre 2019 21:22