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 :

Création d'un utilisateur Office 365 et transfert de mail [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2003
    Messages : 55
    Par défaut Création d'un utilisateur Office 365 et transfert de mail
    Bonjour,
    J'ai un script qui (1) créé un utilisateur Office 365 puis (2) définit le mail auquel transférer ses messages :
    La première opération fonctionne sans problème ; la deuxième ne fonctionne pas : le message suivant apparaît :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Impossible d'effectuer l'opération, car l'objet 'prenom.nom@organisation.xxx' est introuvable sur
    Néanmoins, si j'effectue la deuxième opération quelques minutes après la première, ça fonctionne. Il semblerait donc qu'il y ait un délai entre la création d'un utilisateur et la possibilité de lui attribuer un email de transfert.

    Ma question est la suivante : comment procéder pour enchainer les deux opérations avec le bon timing ? Autrement dit, y-a-t'il moyen de savoir quand le transfert de mail est disponible ?

    voici le script en question :
    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
    # je récupère une instance d'accréditation
    $Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $AdminName, $Password
     
    # je me connecte
    Write-Host "Connexion au service Office 365..."
    Connect-MsolService -Credential $Cred
     
    # je crée un nouvel user avec licence étudiant
    Write-Host "Création d'un nouvel utilisateur..."
    New-MsolUser -Country France -DisplayName $UserName -FirstName $FirstName -LastName $LastName -UserPrincipalName $Email2 -Password $Password2 -UsageLocation "FR" -LicenseAssignment "contoso:STANDARDWOFFPACK_STUDENT"
     
    # je définis le transfert de mail
    Write-Host "Transfert de mail..."
    Set-Mailbox -Identity $Email2 -DeliverToMailboxAndForward $True -ForwardingSmtpAddress $Email

    PS : toutes les variables sont définis en amont.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2003
    Messages : 55
    Par défaut Création d'un utilisateur Office 365 et transfert de mail - 2
    Bon, j'ai défini une boucle qui s'interrompt quand l'opération de transfert de mail réussit, mais ça ne fonctionne pas mieux : j'ai interrompu le script après une centaine d'occurrence...

    J'ai remplacé l'instruction suivante :

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    Set-Mailbox -Identity $Email2 -DeliverToMailboxAndForward $True -ForwardingSmtpAddress $Email

    par une boucle :

    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
     
    $Try = 1
    Do {
        $Success = $True
        Try {
            Write-Host "- tentative $Try..."
            Set-Mailbox -Identity $Email2 -DeliverToMailboxAndForward $True -ForwardingSmtpAddress $Email
        }
        Catch {
            $Success = $False
            Start-Sleep -s 3
        }
        $Try = $Try + 1
    } Until ($Success -eq $True)

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2003
    Messages : 55
    Par défaut Création d'un utilisateur Office 365 et transfert de mail - Réflexion
    J'ai l'intuition que c'est un problème de disponibilité de service applicatif : il y aurait un service applicatif utilisé pour créer l'utilisateur et un autre pour le transfert de mail. Le deuxième service applicatif ne serait pas tenu au courant de la création de l'utilisateur par le premier et ne pourrait donc pas opérer.

    Je ne suis qu'un débutant sur PowerShell et Office 365, je ne m'exprime donc sans doute pas avec les bons termes, mais si quelqu'un me comprend, qu'il se manifeste !

  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
    Bonjour,

    Je ne connais rien en powershell, mais en toute logique il suffit de recommencer l'opération jusqu'à ce que la commande indique une réussite, avec peut-être une petite temporisation entre chaque essai.

    Bonne journée.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2003
    Messages : 55
    Par défaut
    Citation Envoyé par barnabe0057 Voir le message
    Bonjour,

    Je ne connais rien en powershell, mais en toute logique il suffit de recommencer l'opération jusqu'à ce que la commande indique une réussite, avec peut-être une petite temporisation entre chaque essai.

    Bonne journée.
    Bonsoir,
    regarde le post du 30/10/2019, 22h16...

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    Citation Envoyé par gunico Voir le message
    J'ai l'intuition que c'est un problème de disponibilité de service applicatif : il y aurait un service applicatif utilisé pour créer l'utilisateur et un autre pour le transfert de mail. Le deuxième service applicatif ne serait pas tenu au courant de la création de l'utilisateur par le premier et ne pourrait donc pas opérer.
    C'est du 'Web' en face on peut donc supposer ce type de comportement.
    Mais selon la doc de new-msoluser
    Outputs

    Microsoft.Online.Administration.User

    This cmdlet returns details about the new user that was created, including their temporary password.
    C'est peut être un pb de configuration de ton infra ?
    Et au vue des questions que tu te poses il est préférable de s'adresser à MS directement.

    As-tu essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-User MyNewUser | Set-Mailbox MesParam

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2003
    Messages : 55
    Par défaut
    Citation Envoyé par Laurent Dardenne Voir le message
    Salut,

    C'est du 'Web' en face on peut donc supposer ce type de comportement.
    Mais selon la doc de new-msoluser

    C'est peut être un pb de configuration de ton infra ?
    Et au vue des questions que tu te poses il est préférable de s'adresser à MS directement.

    As-tu essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-User MyNewUser | Set-Mailbox MesParam
    Bonsoir Laurent,
    merci pour tes suggestions, je vais approfondir la question en suivant tes conseils et je vous tiens au courant sur le fil de discussion - en ce moment je suis occupé sur un autre projet plus urgent.

    à bientôt.

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2003
    Messages : 55
    Par défaut
    J'ai trouvé une solution :
    1) tout d'abord, il est nécessaire d'ouvrir une session pour se connecter à Exchange. C'est dans Exchange que je peux définir le transfert de mail ;
    2) ensuite, comme conseillé par Laurent, je fais une boucle jusqu'à ce que je sois sûr que l'utilisateur nouvellement créé existe bien pour Exchange ;
    3) puis enfin je définis le transfert de mail.
    En outre, il est important de fermer la session ouverte après le traitement, car le nombre de sessions ouvertes est limité.
    Ce qui donne :

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    # je récupère une instance d'accréditation
    $Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $AdminName, $Password
     
    # je me connecte
    Write-Host "Connexion au service Office 365..."
    Connect-MsolService -Credential $Cred
     
    # je crée un nouvel user avec licence étudiant
    Write-Host "Création d'un nouvel utilisateur..."
    New-MsolUser -Country France -DisplayName $UserName -FirstName $FirstName -LastName $LastName -UserPrincipalName $Email2 -Password $Password2 -UsageLocation "FR" -LicenseAssignment "contoso:STANDARDWOFFPACK_STUDENT"
     
    # je définis le transfert de mail
    Write-Host "Transfert de mail..."
     
    # je supprime toute session qui serait déjà ouverte
    $OldSessions = Get-PSSession
    if ($OldSessions) {
        Remove-PSSession -Session $OldSessions
    }
     
    # j'ouvre une nouvelle session
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $Cred -Authentication Basic -AllowRedirection
    Import-PSSession $Session
     
    # je tente de récupérer les informations du nouveau user
    $Try = 1
    Do {
        Write-Host "- tentative $Try de récupérer les informations de $UserName..."
        $NewUser = Get-User -Identity $UserName
        if ($NewUser) {
            $Success = $True
        } else {
            $Success = $False
            Write-Host "  échec de la tentative, nouvel essai dans 10 secondes..." -ForegroundColor Yellow
            Start-Sleep -s 10
        }
        $Try = $Try + 1
    } Until ($Success -eq $True)
     
    Set-Mailbox -Identity $Email2 -DeliverToMailboxAndForward $True -ForwardingSmtpAddress $Email
     
    # je ferme la session courante
    Remove-PSSession -Session $Session

    J'ai trouvé pas mal d'aide dans le document 'Essential PowerShell for Office 365' : https://www.programmer-books.com/ess...or-office-365/.

    à bientôt !

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/09/2018, 09h02
  2. [PowerShell] Recherche recursive d'un utilisateur dans un groupe Office 365
    Par arnaudperfect dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 30/03/2015, 18h33
  3. 1 million d'utilisateurs déjà pour Office 365 Home Premium
    Par Stéphane le calme dans le forum Actualités
    Réponses: 11
    Dernier message: 03/06/2013, 12h42
  4. []Création automatique d'utilisateurs
    Par SaeZ dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 27/10/2005, 13h38
  5. création de comptes utilisateur
    Par junty dans le forum Access
    Réponses: 10
    Dernier message: 17/10/2005, 09h35

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