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

C# Discussion :

Créer un Windows Live Account


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 58
    Par défaut Créer un Windows Live Account
    Bonjour chère communauté,


    Une fois encore, je me tourne vers vous, votre savoir et vos compétences, car, après plusieurs heures de recherches, je ne trouve aucune solution.

    Je ne suis pas sûr du topic (soit sur du Windows, ou du C#, car ça concerne les deux), donc excusez-moi si cette erreur est commise.

    Je dispose d'un serveur WS2008R2, Domain Controller, avec un Active Directory.
    Mon objectif est de créer une adresse email avec un nom de domaine dont je suis propriétaire (par exemple, je dispose du nom de domaine developpez.com, et les adresses seront, par exemple, shini86161@developpez.com).

    J'ai entendu parler de Live@edu, mais le WS2008R2 ne permet pas l'Outlook Syncronisation car ILM ne prend pas cette version.
    J'ai fais des recherches sur Codeplex, et j'ai trouvé qqs projets, mais rien qui ne puisse être utile. Je n'utilise pas de BDD.

    Dooooooonc... J'ai cherché les libraires Microsoft en C# pour créer moi-même ces adresses.
    C'est ici que je tourne sot.
    J'ai la librairie Microsoft.Live.AuthHandler.dll et j'avoue que je ne sais pas comment l'utiliser.
    Je veux juste créer un compte avec une adresse particulière.

    Je vous remercie cordialement d'avance.

    shini86161.

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 58
    Par défaut
    Tout d'abord, j'ai oublié de préciser que Live@Edu est utilisé pour héberger les adresses. En suivant l'exemple, les adresses de types @developpez.com sont hébergée par domains.live.com, grâce à un CNAME.

    Après quelques heures de recherches supplémentaires, j'ai avancé un peu.
    En regardant de plus près les solutions de CodePlex, une solution s'est présentée : utilisé le PowerShell pour accéder à Outlook Live, et ajouter une adresse. C'est pourquoi le projet PowerSharp m'a semblé être le plus judicieux.

    La librairie mentionnée dans le post précédent n'est pas utilisée, mais plutôt System.Management.Automation (qui se trouve dans "C:\Windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35\System.Management.Automation.dll"), et Microsoft.LiveAtEdu.Samples.Powershell qui se trouve dans PowerSharp.

    J'ai implémenté le code, modifié pour qu'il s'ajuste à ma plateforme.

    Mon problème se situe lors de la création d'une session :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    _runspace.SetCredential(userName, password);
     
    var command = new PSCommand();
    command.AddScript(string.Format(SessionScripts.NewSessionScript));
    var result = _runspace.ExecuteCommand<PSSession>(command);
    return result[0];
    Le username et le password (en SecureString) sont ceux du compte administrateur, et le script revient à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    internal const string NewSessionScript =
    	"New-PSSession -ConfigurationName Microsoft.Exchange -Authentication:Basic -ConnectionUri https://ps.outlook.com/powershell/ -Credential $" +
    	Constants.Credential + " -AllowRedirection";
    Ce que je ne comprends pas, c'est que l'erreur se situe au niveau du "return result[0];"
    System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection
    Je ne comprends pas du tout.

    J'avoue que PowerShell m'est encore inconnu, je suis encore en train de me documenter sur cet outil et son utilisation. Et c'est assez ésotérique.

    shini86161.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 201
    Par défaut
    Je ne maitrise pas trop le sujet dont tu parles, ni même power shell. Mais ton erreur par contre est plus simple. La variable result semble complètement vide au moment du return, donc vouloir accéder à result[0], retourne une erreur. L'index 0 n'existe tout simplement pas dans result.

    Est tu certain que _runspace.ExecuteCommand<PSSession>(command); doit retourner quelque chose?

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 58
    Par défaut
    Merci DarkHerumor pour ta réponse.

    Oui, ExecuteCommand<PSSession> retourne une collection de PSObject, des sessions ici.

    Voici la méthode en question :

    Code : 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
    public static Collection<T> ExecuteCommand<T>(this Runspace runspace, PSCommand command)
    {
        if (command == null)
            throw new ArgumentOutOfRangeException("command");
     
        if (runspace == null)
            throw new ArgumentOutOfRangeException("runspace");
     
        using (var ps = PowerShell.Create())
        {
            ps.Commands = command;
            ps.Runspace = runspace;
     
            return ps.Invoke<T>();
        }
    }
    C'est quand même dommage que cette API soit si peu documentée...

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 201
    Par défaut
    L'erreur se situe donc dans la commande que tu execute via PowerShell.Execute, car visiblement ton tableau result est vide sur le retour de la méthode.

    Je ne connais malheureusement pas grand chose à PowerShell

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 58
    Par défaut
    Citation Envoyé par DarkHerumor Voir le message
    L'erreur se situe donc dans la commande que tu execute via PowerShell.Execute, car visiblement ton tableau result est vide sur le retour de la méthode.

    Je ne connais malheureusement pas grand chose à PowerShell
    Merci tout de même de ton attention et de tes réponses DarkHerumor

    Oui, visiblement, c'était ça. J'ai opté pour une autre solution.
    Le script Powershell fonctionne bien une fois qu'il est entré à la main. J'ai donc essayé de l'ajouter via du C# comme suit :

    Code : 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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
                PSCredential credential = new PSCredential(adminUsrName_, password);
                Runspace runspace = RunspaceFactory.CreateRunspace();
     
                PowerShell powershell = PowerShell.Create();
                runspace.Open();
                powershell.Runspace = runspace;
     
                // Command to initialize the credentials
                PSCommand cmdCred = new PSCommand();
                cmdCred.AddCommand("Set-Variable");
                cmdCred.AddParameter("Name", "Cred");
                cmdCred.AddParameter("Value", credential);
                powershell.Commands = cmdCred;
                powershell.Invoke();
     
                // Command to initialize the credentials
                PSCommand cmdSession = new PSCommand();
                string script =
                    "$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ " +
                    "-Credential $Cred -Authentication Basic -AllowRedirection";
                cmdSession.AddScript(script);
                powershell.Commands = cmdSession;
                powershell.Invoke();
     
                // Command to import the session
                PSCommand cmdImport = new PSCommand();
                script = "Import-PSSession $Session";
                cmdImport.AddScript(script);
                powershell.Commands = cmdImport;
                powershell.Invoke();
     
                // Command to initialize the user's password
                PSCommand cmdPwd = new PSCommand();
                cmdPwd.AddCommand("Set-Variable");
                cmdPwd.AddParameter("Name", "password");
                cmdPwd.AddParameter("Value", userPassword);
                powershell.Commands = cmdPwd;
                powershell.Invoke();
     
                // Command to create the mail-box
                PSCommand cmdMailBox = new PSCommand();
                string display = firstname_ + " " + lastname_;
                script =
                    "New-Mailbox -WindowsLiveID" + liveId +
                    " -Alias" + username_ +
                    " -Name" + username_ +
                    " -Password $password " +
                    " -FirstName" + firstname_ +
                    " -LastName" + lastname_ +
                    " -DisplayName " + display;
                cmdMailBox.AddScript(script);
                powershell.Commands = cmdMailBox;
                powershell.Invoke();
                //Remove-PSSession $Session
     
                // Command to remove the session
                PSCommand cmdRemove = new PSCommand();
                script =
                    "Remove-PSSession $Session";
                cmdRemove.AddScript(script);
                powershell.Commands = cmdRemove;
                powershell.Invoke();
    Mais rien ne se passe. Pas d'erreurs, pas d'ajout.
    Même situation, mais sans réponse.

    EDIT:
    Aucun "powershell.Invoke();" ne renvoit quoi que soit. Le retour est toujours vide. Une idée ?


    Merci d'avance.

    shini86161.

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

Discussions similaires

  1. [PowerShell] Créer un Windows Live Account
    Par shini86161 dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 19/04/2011, 18h35
  2. [Windows Live Messenger]question sur les messages hors connexion
    Par jmclej dans le forum Messagerie instantanée
    Réponses: 9
    Dernier message: 21/06/2006, 13h34
  3. [VB.NET] Comment créer boutons windows???
    Par fdiedler dans le forum Windows Forms
    Réponses: 11
    Dernier message: 21/02/2005, 18h57

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