35

Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

Embed Size (px)

Citation preview

Page 1: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et
Page 2: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

Introduction à Windows PowerShellIntroduction à Windows PowerShellPrésentation de Windows PowerShellPrésentation de Windows PowerShell

Définition : Qu’est-ce que Monad ?Définition : Qu’est-ce que Monad ?HistoriqueHistoriqueInstallation de Windows PowerShell et Exchange Management Installation de Windows PowerShell et Exchange Management ShellShell

Démonstrations Windows PowerShell et Exchange Shell Démonstrations Windows PowerShell et Exchange Shell ManagementManagement

Essentiels de Windows PowerShellEssentiels de Windows PowerShellCmdlets, Variables, Fournisseurs, Pipelines, Réflexion, EMSCmdlets, Variables, Fournisseurs, Pipelines, Réflexion, EMS

Références et documentationsRéférences et documentations

Page 3: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

L’administration représente 65.9% du coût total du système

-Osterman Research

La messagerie est une application critique pour l’entreprise

Les systèmes de messagerie sont trop complexes et coûteuses

Les tâches d’administration sont jugées trop pénibles et pas assez automatisées

Page 4: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

Monad vient d'une philosophie appelée Monadisme, une forme d'idéalisme pluraliste créée au 18ème siècle par le philosophe G.W. Leibniz, qui a également co-inventé le calcul moderne. Le Monadisme part de l'idée que le monde est une agrégation de simples substances dont le plus petit composant est le Monad).

L'équipe de développement, conduite par Jeffrey Snover, l'architecte en chef de Windows PowerShell, est restée concentrée sur ce concept de composition, qu'on retrouve dans la syntaxe, dans les conventions de nommage, et dans beaucoup d'autres aspects du produit.

Page 5: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

17/06/04, 1ère présentation de Monad par Jeffrey Snover20/06/05, Monad Beta 1 est disponible05/08/05, un australien publie 5 exemples de codes à partir de la Beta 1 de Monad fonctionnant à l’instar d’un code malicieux. F-Secure & Symantec relèvent cette information et la rumeur naît à propos de la faille de sécurité potentielle que pourrait représenter Monad si ce langage était déployé sur toutes les plateformes Windows. Cette rumeur poussera Microsoft dans les jours qui suivent à confirmer que Monad ne sera finalement pas intégré nativement à Windows Vista et à Windows 2003 « R2 ».19/08/05, avant le PDC 2005, Jeffrey Snover explique l’architecture de Monad lors de deux sessions sur Channel9, le blog des développeurs Microsoft.

Liens : http://channel9.msdn.com/ShowPost.aspx?PostID=25506 Monad Demonstrated : http://channel9.msdn.com/ShowPost.aspx?PostID=25915#25915 More talking about Monad : http://channel9.msdn.com/Showpost.aspx?postid=127819

21/09/05, Monad Beta 2 est disponible. Exchange « 12 » est disponible dans les semaines suivantes et intègre Monad10/01/06, Monad Beta 3 est disponible.09/03/06, Monad Beta 3.1 est disponible et annoncé proche de la RTM.25/04/06, Le nom définitif de Monad est Windows PowerShell14 /11/06, Windows PowerShell 1.0 est disponible

Lien : http://www.microsoft.com/presspass/features/2006/nov06/11-14Servers.mspx 16/12/06 , Exchange Server 2007 est disponible avec Windows PowerShell 1.0 + Cmdlets Exchange sous le nom d’Exchange Management Shell

Lien : http://www.microsoft.com/downloads/details.aspx?familyid=1dc0f61b-d30f-44a2-882e-12ddd4ee09d2&displaylang=en

Page 6: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

PowerShell / Monad EnginePowerShell / Monad Engine

Exchange cmdletsExchange cmdlets

Configuration Data AccessConfiguration Data Access

Process boundary Process boundary

Early-bound objsEarly-bound objsWinFormsWinForms

ADO.NetADO.Net

PowerShell / Monad Data ProviderPowerShell / Monad Data Provider

WinFormsWinForms

CLICLISetupSetup

GUIGUI

ADAD RegistreRegistre MAPIMAPI MetaBaseMetaBase

Page 7: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et
Page 8: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

GUICmd

VS

Page 9: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

Scénario Aujourd’hui Demain Bénéfices MSH

GUI Shell MMC MMC with snap-ins layered on MSH-Monad

GUI-Cmd parity Auto script creation (V2)

Command Shell CMD CMDSHCSHKSHMSH-Monad

CMD and UNIX shell parity Command consistency Namespaces as Drives (e.g.

FS, Reg, WMI, AD, Certs, etc)

Command Scripting

CMD scripting CMD scriptingMSH-Monad

Richer language Better text utilities

COM Scripting WSH VBScript Jscript

WSH VBScript Jscript

Jscript (.net)MSH-Monad

Richer language Object utilities Common access to COM,

XML, .NET, ADO, WMI, ADSI

Page 10: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

Interface en ligne de commandeInterface en ligne de commandeCanalisation de données entre commandesCanalisation de données entre commandesPrise en charge des données structuréesPrise en charge des données structuréesPrise en charge étendue des scriptsPrise en charge étendue des scriptsSureté des scriptsSureté des scriptsCommandes Cmd.exe Commandes Cmd.exe Scripts approuvésScripts approuvésPersonnalisation de profilPersonnalisation de profilPrise en charge étendue d’interfacePrise en charge étendue d’interface

Page 11: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

Toutes les commandes d’Exchange

Management Console sont exécutées en

PowerShell

Page 12: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et
Page 13: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

Interface en ligne de commandeInterface en ligne de commandeCanalisation de données entre commandesCanalisation de données entre commandesPrise en charge des données structuréesPrise en charge des données structuréesPrise en charge étendue des scriptsPrise en charge étendue des scriptsSureté des scriptsSureté des scriptsCommandes Cmd.exe Commandes Cmd.exe Scripts approuvésScripts approuvésPersonnalisation de profilPersonnalisation de profilPrise en charge étendue d’interfacePrise en charge étendue d’interface

Page 14: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et
Page 15: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

Msh> Get-mailbox –Server “x64-e2k3-0001”

Name Alias ServerName ProhibitSendQuota

---- ----- ---------- -----------------

User1 User1 x64-e2k3-0001 unlimited

User2 User2 x64-e2k3-0001 unlimited

NomNomNomNom

Nom des propriétésNom des propriétésNom des propriétésNom des propriétés

Valeurs des propriétésValeurs des propriétés

CommandeCommande ParamètreParamètre

VerbeVerbeVerbeVerbe ObjetObjetObjetObjet ArgumentArgumentArgumentArgument

Page 16: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

Verbes– Update– New– Get– Remove– Set– Add– Enable– Mount– Dismount– Disable– Test

Noms (examples)– Mailboxdatabase– Storagegroup– Sendconnector– Umautoattendant– Transportagent– Mobiledevice– Systemhealth– Servicehealth– Journalrule– MAPIconnectivity– Distributiongroup

Get-excommand | out-file c:\excommand.txt

Page 17: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et
Page 18: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et
Page 19: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et
Page 20: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et
Page 21: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et
Page 22: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

•Ouvrir Exchange Management Shell depuis le menu Programmes•Cliquez sur Démarrer, Programmes, puis sur Microsoft Exchange Server 2007•Cliquez sur Exchange Management Shell

•Ouvrir Exchange Management Shell depuis le menu Programmes•Cliquez sur Démarrer, Programmes, puis sur Microsoft Exchange Server 2007•Cliquez sur Exchange Management Shell

Procédure 1

•Ajout du composant logiciel enfichable Exchange Management Shell depuis Windows PowerShell •Cliquez sur Démarrer, Programme, puis sur Windows PowerShell 1.0•Cliquez sur Windows PowerShell•Une fois l’interpréteur de commande interactif ouvert, tapez la commande suivante :•Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin

•Ajout du composant logiciel enfichable Exchange Management Shell depuis Windows PowerShell •Cliquez sur Démarrer, Programme, puis sur Windows PowerShell 1.0•Cliquez sur Windows PowerShell•Une fois l’interpréteur de commande interactif ouvert, tapez la commande suivante :•Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin

Procédure 2

Page 23: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

Get-Help Set-Mailbox –Parameter “quota“Get-Help Set-Mailbox –Parameter “quota“

Get-Help –Role “Mailbox” Get-Help –Component “Recipient”Get-Help –Functionality “Server”

Get-Help –Role “Mailbox” Get-Help –Component “Recipient”Get-Help –Functionality “Server”

Page 24: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

Get-DistributionGroup | Format-List Name, *OnlyFrom, PrimarySmtpAddress, *Size*Get-DistributionGroup | Format-List Name, *OnlyFrom, PrimarySmtpAddress, *Size*

Page 25: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

Get-Mailbox –Database Research | Format-Table Name, ProhibitSendQuota, Database -WarpGet-Mailbox –Database Research | Format-Table Name, ProhibitSendQuota, Database -Warp

Page 26: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

Mettre un quota de 1.000 Ko pour l’émission de tous les utilisateurs ayant une BAL présents dans la DL “RemoteUsers”

Supprimer les groupes de stockage contenant le mot “temp”, avec une demande de confirmation

Déplacer tous les utilisateurs du serveur LYON vers le serveur CORP dans la base de données nommée “DB1”

Get-Mailbox –server LYON| move-mailbox –targetDatabase Get-Mailbox –server LYON| move-mailbox –targetDatabase “CORP\DB1”“CORP\DB1”Get-Mailbox –server LYON| move-mailbox –targetDatabase Get-Mailbox –server LYON| move-mailbox –targetDatabase “CORP\DB1”“CORP\DB1”

Get-StorageGroup | where { $_.Name –imatch “temp” } | Get-StorageGroup | where { $_.Name –imatch “temp” } | Remove-StorageGroup –confirmRemove-StorageGroup –confirmGet-StorageGroup | where { $_.Name –imatch “temp” } | Get-StorageGroup | where { $_.Name –imatch “temp” } | Remove-StorageGroup –confirmRemove-StorageGroup –confirm

Get-DistributionGroup “RemoteUsers” | Get-Get-DistributionGroup “RemoteUsers” | Get-DistributionGroupMember |DistributionGroupMember |Set-Mailbox –ProhibitSendQuota 1000Set-Mailbox –ProhibitSendQuota 1000

Get-DistributionGroup “RemoteUsers” | Get-Get-DistributionGroup “RemoteUsers” | Get-DistributionGroupMember |DistributionGroupMember |Set-Mailbox –ProhibitSendQuota 1000Set-Mailbox –ProhibitSendQuota 1000

Page 27: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

Création de 10 utilisateurs et de leurs boîtes aux lettres

1..10 | ForEach { Net User “User$_“ MyPassword=01 /ADD /Domain; Enable-Mailbox “User$_“ –Database “NomBanqueInformation“ }1..10 | ForEach { Net User “User$_“ MyPassword=01 /ADD /Domain; Enable-Mailbox “User$_“ –Database “NomBanqueInformation“ }

Explications : La commande 1..10 génère les nombres entiers de 1 à 10 et les transmet par le pipeline à chaque Cmdlet ForEach. Le Cmdlet ForEach agit sur chaque objet à sa réception et exécute les commandes entre accolades { } pour chaque objet. La commande Net User crée un nouvel utilisateur de domaine et le Cmdlet Enable-Mailbox crée une nouvelle boîte aux lettres dans la base appelée « NomBanqueInformation » sur le serveur local. Le point-virgule sépare les deux commandes afin qu'elles puissent être placées sur la même ligne de commande. La variable $_ est une variable spéciale qui contient la valeur de l'objet qui se trouve dans le pipeline. Dans cet exemple, la variable $_ contient le nombre entier qui se trouve dans le pipeline.

Page 28: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

Lister les boîtes aux lettres et certaines propriétés

Get-Mailbox | Format-Table Name, Database, *quota*Get-Mailbox | Format-Table Name, Database, *quota*

Explications : Le Cmdlet Get-Mailbox renvoie chaque boîte aux lettres, puis transfère la sortie de chaque objet de boîte aux lettres au Cmdlet Format-Table. Par défaut, le Cmdlet Format-Table affiche toutes les propriétés renvoyées. Ici seules les propriétés « Name », « Database », comme toutes les propriétés qui contiennent la chaîne « quota » sont requises.

Page 29: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

Définir des quotas

Get-User –Filter { Title –Like “*Manager*“} –RecipientTypeDetails UserMailbox | Set-Mailbox –ProhibitSendQuota 600MBGet-User –Filter { Title –Like “*Manager*“} –RecipientTypeDetails UserMailbox | Set-Mailbox –ProhibitSendQuota 600MB

Explications : Le Cmdlet Get-User renvoie tous les objets utilisateurs contenus dans Active Directory, y compris les utilisateurs non autorisés à utiliser la messagerie électronique. Afin de récupérer les objets utilisateurs que le Cmdlet Set-Mailbox peut utiliser, il faut filtrer le résultant de manière à ne renvoyer que les objets utilisateurs Active Directory qui sont des utilisateurs autorisés à utiliser la messagerie. Le paramètre RecipientTypeDetails permet de spécifier les objets qui possèdent une boîte aux lettres (avec UserMailbox) dans le cas présent. Il reste à récupérer les utilisateurs identifiés comme managers. Dans l’exemple, la propriété Title de chaque objet utilisateur Active Directory est renseignée. Nous nous servons de cette valeur pour déterminer les utilisateurs qui sont des managers à l'aide du paramètre Filter qui donne l'instruction au serveur de ne renvoyer que les objets Active Directory correspondant aux critères indiqués. Cette opération s'appelle le filtrage côté serveur. Une fois que vous avez défini un ensemble d'objets, celui-ci est transmis au Cmdlet Set-Mailbox, qui définit alors la propriété ProhibitSendQuota de chaque boîte aux lettres à 600 Mo.

Page 30: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

Suppression de toutes les boîtes aux lettres d’une DL

Get-DistributionGroupMember “Marketing2006” | Where { $_.RecipientType –Eq “UserMailbox” } | Remove-Mailbox -WhatIfGet-DistributionGroupMember “Marketing2006” | Where { $_.RecipientType –Eq “UserMailbox” } | Remove-Mailbox -WhatIf

Explications : Le Cmdlet Get-DistributionGroupMember récupère les objets destinataires qui sont membres du groupe de distribution « Marketing2006 ». Cependant, il faut exclure tous les types de destinataires sauf ceux qui correspondent à des boîtes aux lettres « UserMailbox ». Néanmoins, contrairement à d'autres Cmdlets, le Cmdlet Get-DistributionGroupMember ne dispose pas du Cmdlet Filter, ce qui signifie qu'il ne peut pas effectuer le filtrage côté serveur (parce qu'ils n'y voient aucun avantage en termes de performance). Dans ce cas, vous pouvez utiliser le Cmdlet Where pour effectuer le filtrage côté client, ce qui récupère tous les objets et effectue le filtrage sur la machine cliente locale. Le Cmdlet Where ne transmet que les objets qui répondent aux critères qui sont spécifiés. Les objets qui ont un RecipientType de « UserMailbox » sont envoyés au Cmdlet Remove-Mailbox. Ce Cmdlet supprime l'objet utilisateur Active Directory et marque la boîte aux lettres pour élimination. Lorsque le paramètre WhatIf est utilisé, le Cmdlet Remove-Mailbox affiche un texte similaire à ce qui suit :

What if : Removing the Mailbox “domain.local/Users/User10“ will remove the Windows user object and mark the mailbox in the database for removal.

Page 31: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

Liste des publications EmplacementWindows PowerShell Page d’accueil http://www.microsoft.com/windowsserver2003/technologies/management/

powershell/default.mspx

Windows PowerShell Téléchargement http://www.microsoft.com/technet/scriptcenter/topics/msh/download.mspx ethttp://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx

Windows PowerShell Présentation http://msevents.microsoft.com/cui/eventdetail.aspx?eventID=1032277850&Culture=en-US et http://msevents.microsoft.com/cui/eventdetail.aspx?eventID=1032277852&Culture=en-US

Windows PowerShell Démonstrations http://www.microsoft.com/technet/scriptcenter/topics/msh/payette1.mspx ethttp://www.microsoft.com/technet/scriptcenter/topics/winpsh/payette2.mspx et http://www.microsoft.com/technet/scriptcenter/topics/winpsh/payette3.mspx

Windows PowerShell Formations http://www.microsoft.com/technet/scriptcenter/webcasts/ps.mspx

Windows PowerShell Script Center http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx

Windows PowerShell Blog http://blogs.msdn.com/monad/ ethttp://blogs.msdn.com/PowerShell/

Windows PowerShell Wiki http://channel9.msdn.com/wiki/default.aspx/Channel9.WindowsPowerShellWiki et http://powershell.wiki.com/

Exchange Management Shell Présentation http://www.microsoft.com/downloads/details.aspx?displaylang=fr&FamilyID=1dc0f61b-d30f-44a2-882e-12ddd4ee09d2

Exchange Management Shell Démonstrations http://msexchangeteam.com/videos/9/general/entry428365.aspx

Exchange Management Shell Guide de référence rapide http://www.microsoft.com/downloads/details.aspx?FamilyId=01A441B9-4099-4C0F-B8E0-0831D4A2CA86&displaylang=en

Page 32: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

Signer vos scripts PowerShell (Get/Set-ExecutionPolicy) Utiliser makecert.exe du .NET Framework SDK

n/software NetCmdlets Beta 2

PowerGadgets

PowerShell Remoting

http://www.microsoft.com/downloads/thankyou.aspx?familyId=1AEF6FCE-6E06-4B66-AFE4-9AAD3C835D3D&displayLang=enhttp://www.microsoft.com/downloads/thankyou.aspx?familyId=1AEF6FCE-6E06-4B66-AFE4-9AAD3C835D3D&displayLang=en

http://www.nsoftware.com/powershell/download.aspxhttp://www.nsoftware.com/powershell/download.aspx

http://www.powergadgets.com/tutorials/powershellTutorial.aspxhttp://www.powergadgets.com/tutorials/powershellTutorial.aspx

http://www.gotdotnet.com/Workspaces/releases/viewuploads.aspx?id=ce09cdaf-7da2-4f1c-bed3-f8cb35de5aeahttp://www.gotdotnet.com/Workspaces/releases/viewuploads.aspx?id=ce09cdaf-7da2-4f1c-bed3-f8cb35de5aea

Page 33: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

Merci pour votre participation et vos évaluations

Windows Vista SP1 « Fiji » intégrera PowerShell(Prévu pour fin 2007)

http://www.powershell-scripting.com/http://www.powershell-scripting.com/

Communauté Francophone PowerShell

Outil : PowerShell Analyzer PowerShell Analyzer

PowerShell IDE

The PowerShell Guy (MVP PowerShell)

http://www.powershellanalyzer.com/http://www.powershellanalyzer.com/

http://www.powershell.com/http://www.powershell.com/

http://thepowershellguy.comhttp://thepowershellguy.com

Page 34: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

S’informer S’informer - Un portail d’informations, des - Un portail d’informations, des événements, une newsletter bimensuelle événements, une newsletter bimensuelle personnaliséepersonnalisée

Se former - Se former - Des webcasts, des articles techniques, des Des webcasts, des articles techniques, des téléchargements, des forums pour échanger avec vos téléchargements, des forums pour échanger avec vos pairspairs

Bénéficier de services - Bénéficier de services - Des cursus de formations et Des cursus de formations et de certifications, des offres de support techniquede certifications, des offres de support technique

Visual Studio 2005 +Visual Studio 2005 +

Abonnement Abonnement MSDN MSDN Premium Premium

Abonnement Abonnement TechNet TechNet Plus :Plus :

Versions d’éval + 2 incidents Versions d’éval + 2 incidents supportsupport

Page 35: Introduction à Windows PowerShell Présentation de Windows PowerShell Définition : Quest-ce que Monad ? Historique Installation de Windows PowerShell et

© 2007 Microsoft France

Votre potentiel, notre passion TM