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 :

Mettre à jour en masse les managers AzureAD [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2020
    Messages : 8
    Par défaut Mettre à jour en masse les managers AzureAD
    Bonjour à tous.

    Bien, un petit post pour vous décrire mon problème... Ah et pour info, je débute en PS, mais je comprends peu à peu la technique et le langage :) Soyez patients s'il vous plait :)

    Nous avons récemment fais l'acquisition d'une appli liée à notre AzureAD (uniquement) pour du E-Learning. Donc, nous avons des utilisateurs "invités" qui peuvent se connecter à cette appli pour suivre nos formations.
    Une fois ces invités loggués, il faut que je mette à jour leurs infos à minima pour que les managers de ces invités suivent leur formation et les relancent si besoin.
    J'ai réussi grâce à des recherches sur internet et des concaténations d'infos à créer un premier script qui permet de mettre à jour les given.name et autres attributs avec SetAzureADUser et en masse à partir d'un CSV, bien sûr.

    Mais je pêche sur la partie mise à jour Manager en masse.
    J'ai ce script ci-dessous mais rencontre une erreur avec Set -AzureADUserManager et le pipe. Mon CSV a une colonne id avec l'ObjectId de mes utilisateurs et une autre colonne RefObjectId avec l'Id de chaque manager. J'ai essayé avec une colonne contenant userPrincipalName mais pas de résultats.

    Code PowerShell : 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
    28
    29
    30
    # Get CSV content
    $CSVrecords = Import-Csv C:\Temp\List_update_students.csv -Delimiter ";"
     
    # Create arrays for skipped and failed users
    $SkippedUsers = @()
    $FailedUsers = @()
     
    # Loop trough CSV records
    foreach ($CSVrecord in $CSVrecords) {
        $upn = $CSVrecord.id
        $user = Get-AzureADUser -Filter "-ObjectId -eq '$upn'"  
        if ($user) {
            try{
            $user | Set-AzureADUserManager -ObjectId $CSVrecord.id -RefObjectId $CSVrecord.RefObjectId
            } catch {
            $FailedUsers += $upn
            Write-Warning "$upn user found, but FAILED to update."
            }
        }
        else {
            Write-Warning "$upn not found, skipped"
            $SkippedUsers += $upn
        }
    }
     
    # Array skipped users
    # $SkippedUsers
     
    # Array failed users
    # $FailedUsers

    Voici l'erreur que me renvoi PS :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Set-AzureADUserManager : L'objet d'entrée ne peut être lié à aucun paramètre de la commande, soit parce que cette commande n'accepte pas l'entrée de 
    pipeline, soit parce que l'entrée et ses propriétés ne correspondent à aucun des paramètres qui acceptent l'entrée de pipeline.
    Au caractère Ligne:14 : 17
    + ...     $user | Set-AzureADUserManager -ObjectId $CSVrecord.id -RefObject ...
    +                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument : (class User {
      ...rType: Guest
    }
    :PSObject) [Set-AzureADUserManager], ParameterBindingException
        + FullyQualifiedErrorId : InputObjectNotBound,Microsoft.Open.AzureAD16.PowerShell.SetUserManager




    J'ai eu beau chercher sur internet, cette erreur ne me dit rien de plus malheureusement. J'ai essayé d'autres combinaisons des attributs mais sans résultats.

    J'espère que vous pourrez m'aider dans cette grande énigme :)

    Merci pour votre lecture !!!

    ElladeLyon

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 549
    Par défaut
    Bonsoir,

    J'ai plutôt l'impression que le problème se situe à la ligne 11.

    Essaie ça :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    $user = Get-AzureADUser -Filter "ObjectId eq '$upn'"

    Ou bien ça :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    $user = Get-AzureADUser -ObjectId "$upn"

    A la ligne 14 tu as oublié les " " pour les 2 paramètres.

  3. #3
    Membre régulier
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2020
    Messages : 8
    Par défaut
    Effectivement ça va déjà mieux pour celui-ci Merci. j'oublie souvent ces petits guillemets... Merci pour cela

    A la ligne 14 tu as oublié les " " pour les 2 paramètres.

    Bon j'ai testé avec les guillements mais cela ne marche pas.

    Par contre sans les guillemets, j'avance dans la résolution ! Mais cette fois il m'annonce le message d'erreur du script comme quoi il trouve l'id mais ne peut pas le mettre à jour.

    J'ai regarder mon CSV, il n'y a pas d'espace qui pourrait gêner.

    Je dois rater quelque chose encore.... Je cherche

    Merci pour ton aide barnabe0057 !!

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 549
    Par défaut
    Pourrais-tu poster le message d'erreur dans sa totalité ?
    Pourrais-tu poster une partie de ton fichier .csv ?

  5. #5
    Membre régulier
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2020
    Messages : 8
    Par défaut
    Citation Envoyé par barnabe0057 Voir le message
    Pourrais-tu poster le message d'erreur dans sa totalité ?
    Yep, le voici (les étoiles cachent l'objectid de mon user)

    AVERTISSEMENT*: ****** user found, but FAILED to update.


    Citation Envoyé par barnabe0057 Voir le message
    Pourrais-tu poster une partie de ton fichier .csv ?
    Ok un tableau tout simple avec les id de mon user et les id de son manager. (idem pour les étoiles, mais le nombre de chiffres/lettres correspond à mon export de mon AzureAD.


    ObjectId RefObjectId
    7552ddca-****-****-****-************ 19675e77-****-****-****-************

    Ce fichier est enregistrer en CSV avec virgule et UTF8.
    J'ai essayé en l'enregistrant en CSV avec points-virgule mais j'ai le même message d'erreur.

    Au passage, j'ai fait ça comme changement dans la loop. Le reste n'a pas changer.


    Code PowerShell : 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
    # Loop trough CSV records
    foreach ($CSVrecord in $CSVrecords) {
        $upn = $CSVrecord.ObjectId
        $user = Get-AzureADUser -ObjectId "$upn"  
        if ($user) {
            try{
            $user | Set-AzureADUserManager -ObjectId $CSVrecord.ObjectId -RefObjectId $CSVrecord.RefObjectId
            } catch {
            $FailedUsers += $upn
            Write-Warning "$upn user found, but FAILED to update."
            }
        }
        else {
            Write-Warning "$upn not found, skipped"
            $SkippedUsers += $upn
        }
    }

  6. #6
    Membre régulier
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2020
    Messages : 8
    Par défaut
    Bon y'a un truc avec les guillemets... la loop ci-dessus me renvoi la même erreur qu'au début par rapport à la ligne 14 et au pipe.
    "Set-AzureADUserManager : L'objet d'entrée ne peut être lié à aucun paramètre de la commande, soit parce que cette commande n'accepte pas l'entrée de
    pipeline, soit parce que l'entrée et ses propriétés ne correspondent à aucun des paramètres qui acceptent l'entrée de pipeline."


    Si j'utilise ça :

    Code PowerShell : 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
    # Loop trough CSV records
    foreach ($CSVrecord in $CSVrecords) {
        $upn = $CSVrecord.ObjectId
        $user = Get-AzureADUser -ObjectId "$upn"  
        if ($user) {
            try{
            $user | Set-AzureADUserManager -ObjectId "$CSVrecord".ObjectId -RefObjectId "$CSVrecord".RefObjectId
            } catch {
            $FailedUsers += $upn
            Write-Warning "$upn user found, but FAILED to update."
            }
        }
        else {
            Write-Warning "$upn not found, skipped"
            $SkippedUsers += $upn
        }

    J'ai ce message :
    AVERTISSEMENT*: "object id de mon user" user found, but FAILED to update

    Si je mets les guillemets ici :
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    $user | Set-AzureADUserManager -ObjectId $CSVrecord."ObjectId" -RefObjectId $CSVrecord."RefObjectId"

    Erreur => :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set-AzureADUserManager : L'objet d'entrée ne peut être lié à aucun paramètre de la commande, soit parce que cette commande n'accepte pas l'entrée de 
    pipeline, soit parce que l'entrée et ses propriétés ne correspondent à aucun des paramètres qui acceptent l'entrée de pipeline.
    Au caractère Ligne:14 : 17
    + ...     $user | Set-AzureADUserManager -ObjectId $CSVrecord."ObjectId" -R ...
    +                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument : (class User {
      ...rType: Guest
    Idem avec les guillemets du style ' '

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

Discussions similaires

  1. [Débutant] Mettre à jour Excel avec les données d'un DataTable via OleDB
    Par Rayanea dans le forum ADO.NET
    Réponses: 3
    Dernier message: 02/04/2019, 22h02
  2. Réponses: 3
    Dernier message: 19/05/2008, 14h21
  3. [MySQL] Comment mettre à jour en conservant les données actuelles d'un champs
    Par MisterMacPhisto dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 17/04/2007, 15h49
  4. [VBA-E] comment ne pas mettre à jour les liaisons!
    Par max2245 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/12/2005, 12h05
  5. Mettre à jour les if et variable toute les x seconde.
    Par Guillaume602 dans le forum C++
    Réponses: 5
    Dernier message: 06/12/2005, 19h09

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