Je vois que vous êtes le spécialiste PowerShell donc c'est vers vous que je me tourne.
Je suis en train de réaliser un site Intranet en ASP.NET/C# pour mon entreprise.
Je crée mes utilisateurs AD à partir d’un module du site destiné au service GRH .
Cela se déroule dans la foulée de l’enregistrement du dossier salarié. Jusque là pas de problème je maîtrise. Dans le même ordre d’idée je voudrai automatisé la création de la boite aux lettres de la personne. Malgré mais recherches je n’ai pas trouvé comment faire cela en c#. Il semble que la seule solution est de passer par l’appel d’un script Powershell.
En cherchant à droite et à gauche j’ai trouvé comment créer une fonction C# qui exécute du script powershell. Cela semble marcher, en voici le code :
toujours grace a mes recherches j'ai ensuite pondu une fonction pour construire un script powershell qui crée une boîte aux lettre pour un compte AD et le passe ensuite à ma première fonction pour exécution :
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 public string ExecuterUnScript(string TexteDuScript) { //Creation Espace Powershell Runspace Espace = RunspaceFactory.CreateRunspace(); //Ouverture Espace.Open(); // Cration pipeline et envois du script Pipeline UnPipeLine = Espace.CreatePipeline(); UnPipeLine.Commands.AddScript(TexteDuScript); UnPipeLine.Commands.Add("Out-String"); //Execute le script Collection <PSObject> Resultats = UnPipeLine.Invoke(); //Ferme l'Espace PowerShell Espace.Close(); //Conversion du resultat en string StringBuilder stringBuilder = new StringBuilder(); foreach (PSObject obj in Resultats) { stringBuilder.AppendLine(obj.ToString()); } UnPipeLine.Dispose(); Espace.Dispose(); return stringBuilder.ToString(); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public string CreationBoîteAuxLettresExchange(string Nom, string Prenom, string UserAD, string MotDePasseUserAD, string BaseDeDonneesExchange, string Domaine, string Administrateur, string MotDePasseAdministrateur, string ControleurDeDomaine) { //BASE EXCHANGE = Mailbox Database 0113932642 string NomAffiche = Nom + " " + Prenom; string Alias = Prenom + " " + Nom; string AdresseEmail = Prenom + "." + Nom + "@" + Domaine; string CompteAD = Domaine + "\\" + UserAD; string CompteAdmin = Domaine + "\\" + Administrateur; string Script = "New-Mailbox -Database " + BaseDeDonneesExchange + " -Name " + NomAffiche + " -LinkedDomainController " + ControleurDeDomaine + " -LinkedMasterAccount " + CompteAD + " -OrganizationalUnit Users -UserPrincipalName" + AdresseEmail + "-LinkedCredential (Get-Credential " + CompteAdmin + ")"; return ExecuterUnScript(Script); }
Voici ma configuration serveurs
Un serveur web sur lequel se trouve ce code : SRV-WEB
Un contrôleur de domaine : SRV-01
mon serveur de messagerie : SRV-EXCHANGE (version 2010)
Dans l'etat actuel des choses cela ne marche pas car selon ce que je comprend mon script s'execute en local sur le serveur web alors qu'il devrait s'executer sur mon serveur Excahnge ... je ne sais même pas si il est correct ...
j'en appelle donc à votre expertise pour me dire en premier lieux si je m'y prend bien pour faire ce que je veux faire et pour que vous me donniez des pistes de travail et de recherches vers la bonne solution ...si vous en voyez une ....
Merci d'avance ....
P.JEAN
Partager