<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4925101055280698045</id><updated>2012-02-07T15:47:02.263+01:00</updated><category term='winforms'/><category term='SQL'/><category term='SCCM'/><category term='OpenXML'/><category term='Techdays'/><category term='Podcast'/><category term='CODE GENERATOR'/><category term='ASP'/><category term='codeplex'/><category term='Tutorial'/><category term='System Center'/><category term='Poshboard'/><category term='PowerShellPlus'/><category term='Word'/><category term='IDE'/><category term='AgDatagrid'/><category term='Webcast'/><category term='Ajax'/><category term='Dashboard'/><category term='ASP.NET'/><category term='Datagrid'/><category term='0.4'/><category term='C#'/><category term='PowerShell'/><category term='WMI'/><category term='ADSI'/><category term='editeur'/><category term='MultiTouch'/><category term='video'/><category term='Mindmap'/><category term='Offre emploi'/><category term='WPF'/><category term='Dynamic Object'/><category term='Silverlight'/><category term='WorkFlow'/><category term='Excel'/><title type='text'>Dev-Infra</title><subtitle type='html'>Infos et idées pour le developpement orienté infrastructure (System Center, Exchange, Windows 2008/2003 XP/Vista...). Scripting PowerShell / VBS, dev .NET (C#/VB.NET/ASP.NET) et SilverLight.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>62</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-5662653120468635138</id><published>2012-02-07T15:36:00.008+01:00</published><updated>2012-02-07T15:47:02.269+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>PowerShell GUI Designer: créez des interfaces pour PoshBoard et ShowUI en ligne</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="text-align: left; "&gt;En tant que développeur PowerShell, vous avez appris à vous passer des interfaces graphiques pour contrôler vos systèmes.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Il est toujours intéressant de pouvoir habiller nos scripts avec une interface pour faciliter leur utilisation, que ce soit en WPF via ShowUI ou online avec PoshBoard.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Créer une interface peut être ardu, même pour un développeur .NET. C'est pourquoi nous vous proposons aujourd'hui gratuitement notre designer, qui va vous permettre de créer dynamiquement des scripts pour PoshBoard et ShowUI (d'autres format de sortie sont prévues)&lt;/div&gt;&lt;div&gt;&lt;img src="http://1.bp.blogspot.com/-yWEjAVCF8No/TzE5B7MqfkI/AAAAAAAAAdA/Idhf5nNgVCI/s320/GUIDESIGNER.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5706404908088589890" style="text-align: left;display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; cursor: pointer; width: 320px; height: 159px; " /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;C'est encore une version Alpha, mais vous pouvez déjà commencer à créer vos IHM ici :&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.poshboard.com/Designer/Default.html"&gt;http://www.poshboard.com/Designer/Default.html&lt;/a&gt; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;N'hésitez pas à me remonter bugs, idées sur cet outil, j'espère qu'il vous sera utile.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-5662653120468635138?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/5662653120468635138/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=5662653120468635138' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/5662653120468635138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/5662653120468635138'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2012/02/powershell-gui-designer-creez-des.html' title='PowerShell GUI Designer: créez des interfaces pour PoshBoard et ShowUI en ligne'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-yWEjAVCF8No/TzE5B7MqfkI/AAAAAAAAAdA/Idhf5nNgVCI/s72-c/GUIDESIGNER.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-6000402404595424489</id><published>2012-01-19T10:24:00.000+01:00</published><updated>2012-01-19T10:25:17.681+01:00</updated><title type='text'>PoshBoard aux TechDays 2012</title><content type='html'>&lt;p style="text-align: center; "&gt;&lt;br /&gt; &lt;span style="font-size:20px;"&gt;Venez découvrir la version finale de PoshBoard et PoshBoard Windows Phone 7 lors de notre session aux TechDays 2012&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;le jeudi 9 février à 14H30&lt;/strong&gt;, et durant les jours sur le stand de Nelite!&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="text-align: center; "&gt;&lt;br /&gt; &lt;span style="font-size:20px;"&gt;&lt;a href="http://www.microsoft.com/france/mstechdays/programmes/parcours.aspx?SessionID=e769ad6e-458b-4711-9503-152ebcd4a0b9&amp;amp;WT.mc_id=MSCOM_FR_FR_Twitter_MSTD2012#&amp;amp;fbid=bspWtqTpPwb"&gt;Plus d'infos ici&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="text-align: center; "&gt;&lt;br /&gt; &lt;span style="font-size:20px;"&gt;Nous présenterons des use-cases concrets autour d'Active Directory, Exchange ou la virtualisation issu de nos experiences chez nos clients.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-6000402404595424489?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/6000402404595424489/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=6000402404595424489' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/6000402404595424489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/6000402404595424489'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2012/01/poshboard-aux-techdays-2012.html' title='PoshBoard aux TechDays 2012'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-7713955103877746498</id><published>2011-11-11T09:51:00.002+01:00</published><updated>2011-11-11T09:51:41.981+01:00</updated><title type='text'>PoshBoard version finale disponible</title><content type='html'>La première build "finale" de PoshBoard est disponible, vous pouvez la télécharger sur notre site &lt;a href="http://www.poshboard.com"&gt;http://www.poshboard.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-7713955103877746498?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/7713955103877746498/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=7713955103877746498' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/7713955103877746498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/7713955103877746498'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2011/11/poshboard-version-finale-disponible.html' title='PoshBoard version finale disponible'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-1525216336228623319</id><published>2011-11-11T09:49:00.002+01:00</published><updated>2011-11-11T09:51:08.288+01:00</updated><title type='text'>PoshBoard final version available</title><content type='html'>Hi all,&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The final release of PoshBoard Client is here ! download it from &lt;a href="http://www.poshboard.com"&gt;http://www.poshboard.com&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-1525216336228623319?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/1525216336228623319/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=1525216336228623319' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/1525216336228623319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/1525216336228623319'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2011/11/poshboard-final-version-available.html' title='PoshBoard final version available'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-4144994890288121491</id><published>2011-10-10T11:38:00.002+02:00</published><updated>2011-10-10T11:39:47.814+02:00</updated><title type='text'>Temoignage PoshBoard PoshBoard</title><content type='html'>Hello ! je suis à la recherche de quelqu'un souhaitant témoigner sur son utilisation de PoshBoard pour un magazine.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Contactez moi a antoine.habert[At]nelite.com&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;thks !&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-4144994890288121491?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/4144994890288121491/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=4144994890288121491' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/4144994890288121491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/4144994890288121491'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2011/10/temoignage-poshboard-poshboard.html' title='Temoignage PoshBoard PoshBoard'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-777330285479592608</id><published>2011-10-10T10:56:00.002+02:00</published><updated>2011-10-10T11:01:34.815+02:00</updated><title type='text'>Recherche experts PowerShell</title><content type='html'>Un petit message professionnel: Je suis à la recherche de 2 profils experts PowerShell ayant une affinité avec le développement .NET pour rejoindre mon équipe 100% dédiée au développement orienté infrastructure.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nous travaillons sur les dernières technologies Microsoft dans une équipe traitant à la fois l'automatisation dans des projets infrastructure et la R&amp;amp;D (Windows Phone, Windows 8, PowerShell 3.0....). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Les postes sont ouverts sur Levallois-Perret, salaire et package attractif. Contactez moi à antoine.habert[AT]nelite.com pour plus d'infos.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-777330285479592608?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/777330285479592608/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=777330285479592608' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/777330285479592608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/777330285479592608'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2011/10/recherche-experts-powershell.html' title='Recherche experts PowerShell'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-8400558737481966679</id><published>2011-07-22T14:56:00.003+02:00</published><updated>2011-07-22T15:00:17.554+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>PowerWPF: Template de projet WPF avec PowerShell intégré</title><content type='html'>Je viens de  publier un nouvel outil sur codeplex, PowerWPF: &lt;a href="http://powerwpf.codeplex.com/"&gt;http://PowerWPF.codeplex.com&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-UcxPrMiG2EY/TilzYUMjylI/AAAAAAAAAYw/MlNWJU86Z7E/s1600/PowerWPF.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 169px;" src="http://4.bp.blogspot.com/-UcxPrMiG2EY/TilzYUMjylI/AAAAAAAAAYw/MlNWJU86Z7E/s320/PowerWPF.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5632159670578956882" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: rgb(48, 51, 45); font-family: 'Segoe UI', 'Microsoft Sans Serif', Arial, Geneva, sans-serif; font-size: 13px; "&gt;L'objectif de ce projet est de faciliter la création d'application WPF par les utilisateurs de PowerShell, &lt;b&gt;qui n'ont aucune compétence en développement WPF&lt;/b&gt;. Nous avons géré toute la gestion de POwerShell (appel asynchrone, monitoring du runspace, des pipelines, etc...), en ne laissant que les méthodes les plus simples possibles pour appeler PowerShell et récupérer le resultat. vous avez juste à créer l'interface avec Visual Studio Express, Glisser/déposer les contrôles, rajouter quelques lignes de code C# pour appelez vos scripts (qui peuvent être intégrer à l'outil)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: rgb(48, 51, 45); font-family: 'Segoe UI', 'Microsoft Sans Serif', Arial, Geneva, sans-serif; font-size: 13px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: rgb(48, 51, 45); font-family: 'Segoe UI', 'Microsoft Sans Serif', Arial, Geneva, sans-serif; font-size: 13px; "&gt;PowerWPF produit un exe unique, directement utilisable et partageable.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: rgb(48, 51, 45); font-family: 'Segoe UI', 'Microsoft Sans Serif', Arial, Geneva, sans-serif; font-size: 13px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: rgb(48, 51, 45); font-family: 'Segoe UI', 'Microsoft Sans Serif', Arial, Geneva, sans-serif; font-size: 13px; "&gt;Je posterai dans les prochains jours un tutorial sur l'utilisation du template.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;I'll post a tutorial in the coming days.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-8400558737481966679?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/8400558737481966679/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=8400558737481966679' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/8400558737481966679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/8400558737481966679'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2011/07/je-viens-de-publier-un-nouvel-outil-sur.html' title='PowerWPF: Template de projet WPF avec PowerShell intégré'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-UcxPrMiG2EY/TilzYUMjylI/AAAAAAAAAYw/MlNWJU86Z7E/s72-c/PowerWPF.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-8789369713015335403</id><published>2011-07-11T16:32:00.005+02:00</published><updated>2011-07-11T16:37:56.280+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Poshboard'/><title type='text'>La beta de PoshBoard 4 est ouverte!</title><content type='html'>Tout est dans le titre: vous pouvez desormais acceder à la Beta de PoshBoard 4 sur notre site web!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;PoshBoard est une solution gratuite de portail web modulaire basé sur PowerShell &amp;amp; Silverlight.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Téléchargez la ici : &lt;a href="http://www.poshboard.com"&gt;http://www.poshboard.com&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-8789369713015335403?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/8789369713015335403/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=8789369713015335403' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/8789369713015335403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/8789369713015335403'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2011/07/la-beta-de-poshboard-4-est-ouverte.html' title='La beta de PoshBoard 4 est ouverte!'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-5453951341367757358</id><published>2011-02-14T16:57:00.004+01:00</published><updated>2011-02-14T23:15:00.572+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Execution de PowerShell 2.0 dans un site web ASP.NET</title><content type='html'>&lt;p align="justify"&gt;Dans ce nouvel article, nous allons voir comment utiliser PowerShell 2.0 dans un site web ASP.NET&lt;/p&gt;  &lt;p align="justify"&gt;L'exemple est volontairement le plus basique possible, nous l'étendrons dans les prochains articles.&lt;/p&gt;&lt;p align="justify"&gt;Cet exemple utilise PowerShell 2.0 et IIS 7.0, mais devrait fonctionner avec IIS 6.0. Vous pouvez utiliser une version express de Visual Studio.&lt;/p&gt;&lt;p align="justify"&gt;C'est parti!&lt;/p&gt;  &lt;h1 align="justify"&gt;&lt;/h1&gt;  &lt;h1 align="justify"&gt;&lt;/h1&gt;  &lt;h3 align="justify"&gt;Configuration du projet&lt;/h3&gt;  &lt;p align="justify"&gt;Ouvrez Visual Studio, choisir Fichier &gt; nouveau projet&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/_Nb_tnJCL_Vw/TVk5lSRlFyI/AAAAAAAAATo/izXOygKxL2c/s1600-h/tuto1_thumb1%5B2%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="tuto1_thumb1" border="0" alt="tuto1_thumb1" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVk5nhNHkoI/AAAAAAAAATs/O4M5F48G-Uk/tuto1_thumb1_thumb.png?imgmax=800" width="541" height="221" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Choisir projet web, Application ASP.NET. Choisir un framework cible, 2.0 jusqu'à 4.0 (cet exemple s'appuie sur .NET 4.0 mais fonctionne avec les autres versions du framework)&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVk5oayQF9I/AAAAAAAAATw/ZWzJrGBBdc8/s1600-h/tuto2_thumb3%5B2%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="tuto2_thumb3" border="0" alt="tuto2_thumb3" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVk5o0MxEoI/AAAAAAAAAT0/IULA8mue5l4/tuto2_thumb3_thumb.jpg?imgmax=800" width="541" height="406" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Une fois le projet créé, ajouter la réference à la librairie PowerShell appelée "System.Management.Automation". Faire un clic droit sur References et choisir "Ajouter une référence..."&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVk5p0KFPSI/AAAAAAAAAT4/2wdtFQEpY_A/s1600-h/tuto3_thumb2%5B2%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="tuto3_thumb2" border="0" alt="tuto3_thumb2" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVk5rKDka3I/AAAAAAAAAT8/1v3QGhOiuIY/tuto3_thumb2_thumb.jpg?imgmax=800" width="541" height="362" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Choisir "Parcourir...":&lt;/p&gt;  &lt;p align="justify"&gt;C:\Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0&lt;/p&gt;  &lt;p align="justify"&gt;ou&lt;/p&gt;  &lt;p align="justify"&gt;C:\Programmes\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0 &lt;/p&gt;  &lt;p align="justify"&gt;Pour les systèmes x86&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/TVk5sYO6fmI/AAAAAAAAAUA/ndoPv_9O4fo/s1600-h/tuto4_thumb2%5B2%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="tuto4_thumb2" border="0" alt="tuto4_thumb2" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVk5tkDLcrI/AAAAAAAAAUE/KzSLgmBg-XA/tuto4_thumb2_thumb.jpg?imgmax=800" width="479" height="401" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Nous pouvons maintenant construire l'IHM&lt;/p&gt;  &lt;h3 align="justify"&gt;&lt;/h3&gt;  &lt;h3 align="justify"&gt;&lt;/h3&gt;  &lt;h3 align="justify"&gt;Création de l'IHM&lt;/h3&gt;  &lt;p align="justify"&gt;Notre IHM va être super basique: une textbox pour fournir le code PowerShell, un bouton exécuter, une textbox pour le résultat :&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/_Nb_tnJCL_Vw/TVlMCDayOpI/AAAAAAAAAUI/-cz2uVsRdc4/s1600-h/tuto5%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto5" border="0" alt="tuto5" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVlMCvXSsXI/AAAAAAAAAUM/TfJrMVpzYVc/tuto5_thumb%5B1%5D.jpg?imgmax=800" width="506" height="433" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Voici le code ASP.NET pour la page Default.aspx&lt;/p&gt;  &lt;div align="justify"&gt;   &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;     &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; color: black; " id="codeSnippet"&gt;       &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="background-color: #ffff00"&gt;&amp;lt;%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="PowerShellCall._Default" %&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;  &lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color: #800000"&gt;DOCTYPE&lt;/span&gt; &lt;span style="color: #ff0000"&gt;html&lt;/span&gt; &lt;span style="color: #ff0000"&gt;PUBLIC&lt;/span&gt; &lt;span style="color: #0000ff"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;  &lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;html&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;head&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="server"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;head&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;  &lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;form&lt;/span&gt; &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="form1"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="server"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;center&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;table&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;PowerShell Test&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;h3&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;PowerShell Code&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;h3&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;  &lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:TextBox&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="PowerShellCodeBox"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="server"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TextMode&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="MultiLine"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Width&lt;/span&gt;=&lt;span style="color: #ff0000"&gt;700&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Height&lt;/span&gt;=&lt;span style="color: #ff0000"&gt;100&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:TextBox&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum20"&gt;  20:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum21"&gt;  21:&lt;/span&gt;  &lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum22"&gt;  22:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum23"&gt;  23:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:Button&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="ExecuteCode"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="server"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Execute"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Width&lt;/span&gt;=&lt;span style="color: #ff0000"&gt;200&lt;/span&gt; &lt;span style="color: #ff0000"&gt;onclick&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="ExecuteCode_Click"&lt;/span&gt; &lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum24"&gt;  24:&lt;/span&gt;                      &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum25"&gt;  25:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum26"&gt;  26:&lt;/span&gt;  &lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum27"&gt;  27:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;h3&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Result&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;h3&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum28"&gt;  28:&lt;/span&gt;         &lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum29"&gt;  29:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum30"&gt;  30:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:TextBox&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="ResultBox"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TextMode&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="MultiLine"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Width&lt;/span&gt;=&lt;span style="color: #ff0000"&gt;700&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Height&lt;/span&gt;=&lt;span style="color: #ff0000"&gt;200&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="server"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:TextBox&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum31"&gt;  31:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum32"&gt;  32:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;table&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum33"&gt;  33:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum34"&gt;  34:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;center&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum35"&gt;  35:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;form&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum36"&gt;  36:&lt;/span&gt;  &lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum37"&gt;  37:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum38"&gt;  38:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;html&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p align="justify"&gt;Objectif : quand l'utilisateur clique sur "Execute", nous voulons lancer le code PowerShell de la textbox du haut et afficher le résultat dans la textbox du bas.&lt;/p&gt;&lt;p align="justify"&gt;Voyons de plus près le code C# derrière Default.aspx&lt;/p&gt;&lt;h3 align="justify"&gt;Appel de PowerShell 2.0 dans le code behind&lt;/h3&gt;&lt;p align="justify"&gt;Comme vous pouvez le voir dans la page aspx, nous avons un évènement "onclick" sur le bouton. Cette méthode fait appel à la méthode "ExecuteCode_Click" présente dans le fichier .cs&lt;/p&gt;&lt;p align="justify"&gt;Voici le code de cette méthode :&lt;/p&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;div style="BORDER-BOTTOM: silver 1px solid; TEXT-ALIGN: left; BORDER-LEFT: silver 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; MAX-HEIGHT: 200px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: silver 1px solid; CURSOR: text; BORDER-RIGHT: silver 1px solid; PADDING-TOP: 4px" id="codeSnippetWrapper"&gt; &lt;div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet"&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; ExecuteCode_Click(&lt;span style="COLOR: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum2"&gt;   2:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum3"&gt;   3:&lt;/span&gt;             &lt;span style="COLOR: #008000"&gt;// Clean the Result TextBox&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum4"&gt;   4:&lt;/span&gt;             ResultBox.Text = &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;.Empty;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum5"&gt;   5:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum6"&gt;   6:&lt;/span&gt;             &lt;span style="COLOR: #008000"&gt;// Initialize PowerShell engine&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum7"&gt;   7:&lt;/span&gt;             var shell = PowerShell.Create();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum8"&gt;   8:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum9"&gt;   9:&lt;/span&gt;             &lt;span style="COLOR: #008000"&gt;// Add the script to the PowerShell object&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum10"&gt;  10:&lt;/span&gt;             shell.Commands.AddScript(PowerShellCodeBox.Text);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum11"&gt;  11:&lt;/span&gt;             &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum12"&gt;  12:&lt;/span&gt;             &lt;span style="COLOR: #008000"&gt;// Execute the script&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum13"&gt;  13:&lt;/span&gt;             var results = shell.Invoke();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum14"&gt;  14:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum15"&gt;  15:&lt;/span&gt;             &lt;span style="COLOR: #008000"&gt;// display results, with BaseObject converted to string&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum16"&gt;  16:&lt;/span&gt;             &lt;span style="COLOR: #008000"&gt;// Note : use |out-string for console-like output&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum17"&gt;  17:&lt;/span&gt;             &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (results.Count &gt; 0)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum18"&gt;  18:&lt;/span&gt;             {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum19"&gt;  19:&lt;/span&gt;                 &lt;span style="COLOR: #008000"&gt;// We use a string builder ton create our result text&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum20"&gt;  20:&lt;/span&gt;                 var builder = &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; StringBuilder();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum21"&gt;  21:&lt;/span&gt;                 &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum22"&gt;  22:&lt;/span&gt;                 &lt;span style="COLOR: #0000ff"&gt;foreach&lt;/span&gt; (var psObject &lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt; results)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum23"&gt;  23:&lt;/span&gt;                 {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum24"&gt;  24:&lt;/span&gt;                     &lt;span style="COLOR: #008000"&gt;// Convert the Base Object to a string and append it to the string builder.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum25"&gt;  25:&lt;/span&gt;                     &lt;span style="COLOR: #008000"&gt;// Add \r\n for line breaks&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum26"&gt;  26:&lt;/span&gt;                     builder.Append(psObject.BaseObject.ToString() + &lt;span style="COLOR: #006080"&gt;"\r\n"&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum27"&gt;  27:&lt;/span&gt;                 }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum28"&gt;  28:&lt;/span&gt;                 &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum29"&gt;  29:&lt;/span&gt;                 &lt;span style="COLOR: #008000"&gt;// Encode the string in HTML (prevent security issue with 'dangerous' caracters like &lt; &gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum30"&gt;  30:&lt;/span&gt;                 ResultBox.Text = Server.HtmlEncode(builder.ToString());&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum31"&gt;  31:&lt;/span&gt;             }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum32"&gt;  32:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum33"&gt;  33:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p align="justify"&gt;L'exécution de code PowerShell est très simple en C#, nous avons besoin uniquement des étapes suivantes :&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;1) Création de l'objet PowerShell&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;Cette objet est l'objet de base pour PowerShell en C#, il permet entre autre d'exécuter des commandes, instancier les runspaces, récupérer les résultats, les erreurs, etc...&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;2) Création d'un runspace&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;Ici nous créons un runspace pour exécuter le code PowerShell. Il y a différent moyen de configurer un runspace en C#, mais nous resterons sur la méthode la plus simple pour cet article.&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;3) Ouverture du runspace.&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;L'ouverture du runspace est obligatoire pour pouvoir y injecter notre code&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;4) Add the script &lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;Ici, nous ajoutons notre script dans notre runspace.&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;5) Execute script&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;Enfin, nous appelons la méthode Invoke() qui exécute nos commandes dans un pipeline. Cette méthode retourne un collection de PSObject (objet de base retournée par PowerShell)&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;6) Affichage du résultat&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;Ensuite, nous parcourons la collection retournée par notre Runspace pour afficher le résultat. Notez que nous appelons la propriété "BaseObject" pour chaque PSObject, cette propriété contient l'objet d'origine avant sa décoration en PSObject par PowerShell.&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/TVlNEju12II/AAAAAAAAAWY/m3fIZiDyyjE/s1600-h/tuto5%5B7%5D.jpg"&gt;&lt;img style="text-align: center;background-image: none; border-bottom-width: 0px; border-bottom-style: initial; border-bottom-color: initial; border-left-width: 0px; border-left-style: initial; border-left-color: initial; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-top-style: initial; border-top-color: initial; border-right-width: 0px; border-right-style: initial; border-right-color: initial; padding-top: 0px; " title="tuto5" border="0" alt="tuto5" src="http://lh5.ggpht.com/_Nb_tnJCL_Vw/TVlNFkopnII/AAAAAAAAAWc/ZiM1XcrvKYk/tuto5_thumb%5B3%5D.jpg?imgmax=800" width="530" height="453" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Et voilà ! nous avons créer notre projet, nous allons maintenant pouvoir afficher le résultat d'un script dans notre textbox.&lt;/p&gt;&lt;p align="justify"&gt;Il nous reste à présent à publier ce site web, et voir comment spécifier un compte spécifique pour l'exécution.&lt;/p&gt;&lt;p align="justify"&gt;&lt;span class="Apple-style-span" style="font-size: 19px; font-weight: bold; "&gt;Publier le site web&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;Maintenant que notre exemple fonctionne, nous allons publier le site web sur IIS et spécifier l'identité du compte de service.&lt;/p&gt;&lt;p align="justify"&gt;Allez dans "Génerer &gt; Publier...&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMDUec-AI/AAAAAAAAAUQ/AnE9GYDU_yU/s1600-h/tuto6%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto6" border="0" alt="tuto6" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMD81S-jI/AAAAAAAAAUU/VIL-dXT5JdY/tuto6_thumb%5B1%5D.jpg?imgmax=800" width="534" height="348" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Choisir une destination (Inetpub/wwwroot est le repertoire par défaut pour la publication IIS, mais vous pouvez publier votre site dans n'importe quel repertoire du moment que les droits appropriés sont configurés sur le dossier)&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/TVlMEQWyE2I/AAAAAAAAAUY/GK3ykpHzvCE/s1600-h/tuto7%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto7" border="0" alt="tuto7" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlME5QiwmI/AAAAAAAAAUc/mEf55rlRsyg/tuto7_thumb%5B2%5D.jpg?imgmax=800" width="390" height="348" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Après cela, ouvrir la console de gestion IIS, faire un clic droit sur le site web par défault et selectionner "Ajouter une application"&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;Note : &lt;/strong&gt;vous pouvez aussi créer un nouveau site web sous IIS, ou remplacer le site web par défaut pour créer le votre. Créer une application vous permet d'accéder à celle-ci par son nom comme suit: &lt;a href="http://localhost/MyApplication"&gt;http://localhost/&lt;strong&gt;MyApplication&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/_Nb_tnJCL_Vw/TVlMFaRhQXI/AAAAAAAAAUg/623vmlUr4zs/s1600-h/tuto8%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto8" border="0" alt="tuto8" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMF6uOJ8I/AAAAAAAAAUk/0Ux_MK-W8UI/tuto8_thumb%5B1%5D.jpg?imgmax=800" width="511" height="334" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Donner un nom a l'application et cliquer sur OK&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVlMGQNnOCI/AAAAAAAAAUo/2Byon_dE2w8/s1600-h/tuto9%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto9" border="0" alt="tuto9" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMG0WeltI/AAAAAAAAAUs/RWcV0zm731s/tuto9_thumb%5B1%5D.jpg?imgmax=800" width="337" height="241" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Maintenant que l'application est prête, nous pouvons choisir une identité spécifique pour l'exécution de nos commandes. Il y a de nombreuses façon de configurer une identité d'exécution pour un site web, nous couvrirons ici les plus basiques.&lt;/p&gt;&lt;h4 align="justify"&gt;Authentification anonyme&lt;/h4&gt;&lt;p align="justify"&gt;Cette méthode est la plus simple. Nous allons choisir l'authentification anonyme (l'utilisateur ne sera pas identifié) et spécifier un compte de service pour l'exécution du site web. C'est facile, mais gare :&lt;/p&gt;&lt;p align="justify"&gt;Dans ce contexte, n'importe qui peut accéder au site web et exécuter les actions avec l'identité du compte de service fourni ! Il y a toujours possibilité de filtrer l'accès par les droits au niveau fichiers (restreindre l'accès au repertoire), mais ceci n'est pas la méthode la plus sûre, vous êtes prévenus :)&lt;/p&gt;&lt;p align="justify"&gt;Sélectionner l'application, faire un clic droit sur "Authentification"&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/_Nb_tnJCL_Vw/TVlMHivADuI/AAAAAAAAAUw/ur0R01XOYqc/s1600-h/tuto10%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto10" border="0" alt="tuto10" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVlMH3txNRI/AAAAAAAAAU0/rbPX7nBe7BM/tuto10_thumb%5B1%5D.jpg?imgmax=800" width="491" height="321" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Faire un clic droit sur "Authentifcation anonyme" et choisir "Activer", puis Edition&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMIls76FI/AAAAAAAAAU4/KqqXplu09Rs/s1600-h/tuto11%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto11" border="0" alt="tuto11" src="http://lh5.ggpht.com/_Nb_tnJCL_Vw/TVlMI5xsdZI/AAAAAAAAAU8/iheWV25E7FU/tuto11_thumb%5B1%5D.jpg?imgmax=800" width="499" height="326" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Choisir "Utilisateur spécifique" et cliquer sur "Choisir..."&lt;a href="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMJWGgooI/AAAAAAAAAVA/O_GcEO4Khe0/s1600-h/tuto12%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto12" border="0" alt="tuto12" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMJkD_LzI/AAAAAAAAAVE/4s4J3xtfAiI/tuto12_thumb%5B2%5D.jpg?imgmax=800" width="358" height="192" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Remplir le formulaire avec les informations du compte et cliquer sur OK&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/_Nb_tnJCL_Vw/TVlMKB8SpsI/AAAAAAAAAVI/kHGmRKTRAeg/s1600-h/tuto13%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto13" border="0" alt="tuto13" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVlMKlrOasI/AAAAAAAAAVM/T1FjB4REhZ4/tuto13_thumb%5B1%5D.jpg?imgmax=800" width="328" height="252" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Voilà : votre site va s'exécuter avec l'identité de ce compte de service.&lt;/p&gt;&lt;h4 align="justify"&gt;Utiliser un  Pool d'application&lt;/h4&gt;&lt;p align="justify"&gt;Dans des scenarii plus évolués, vous pouvez désactiver l'authentification anonyme et continuer à utiliser un compte de service pour votre site. Pour cela, il faut définir l'identité au niveau du pool d'application.&lt;/p&gt;&lt;p align="justify"&gt;Les pools d'application peuvent être vu comme un contexte d'exécution pour vos sites webs (pour faire simple). Nous n'irons pas dans le détail ici, mais l'idée est de permettre de définir un accès en authentification windows ou formulaire, puis de faire appel à l'identité du pool d'application pour l'exécution des actions dans votre code.&lt;/p&gt;&lt;p align="justify"&gt;Nous  allons créer un pool d'application dédié pour notre projet de test.&lt;/p&gt;&lt;p align="justify"&gt;Premèrement, faire un double clic sur "Pools d'application" dans la console IIS et choisir "Ajouter un pool d'application"&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/TVlMLKtv9DI/AAAAAAAAAVQ/J98PDWp_32Y/s1600-h/tuto30%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto30" border="0" alt="tuto30" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMLrHDk2I/AAAAAAAAAVU/9vt0F2v2-4w/tuto30_thumb%5B1%5D.jpg?imgmax=800" width="529" height="212" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Nommer le pool, choisir le framework approprié et cliquer sur "OK"&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/TVlMMN6zGNI/AAAAAAAAAVY/oeO3aWkkBBY/s1600-h/tuto31%5B2%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto31" border="0" alt="tuto31" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMMRjwXJI/AAAAAAAAAVc/YGq8IyDb0eI/tuto31_thumb.jpg?imgmax=800" width="244" height="220" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Selectionner ensuite le pool d'application, et cliquer sur "Paramètres avancés" dans le menu à droite.&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMNAFp22I/AAAAAAAAAVg/rVeZ4gSwsYI/s1600-h/tuto32%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto32" border="0" alt="tuto32" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMNl6_vaI/AAAAAAAAAVk/bP8Zz8n6vts/tuto32_thumb%5B1%5D.jpg?imgmax=800" width="522" height="315" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Choisir Identité et cliquer sur le bouton "..."&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVlMOPQsqzI/AAAAAAAAAVo/IAHa0kbdOGc/s1600-h/tuto21%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto21" border="0" alt="tuto21" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMOgyHK0I/AAAAAAAAAVs/HJLEIIYuu9Q/tuto21_thumb%5B1%5D.jpg?imgmax=800" width="358" height="448" /&gt;&lt;/a&gt;&lt;/p&gt;Choisir "Compte spécifique et cliquer sur "Définir..."&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMPK7loWI/AAAAAAAAAVw/7EPoRJnD_sw/s1600-h/tuto22%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto22" border="0" alt="tuto22" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVlMPfaDEDI/AAAAAAAAAV0/xe8Im3HPElg/tuto22_thumb%5B1%5D.jpg?imgmax=800" width="430" height="256" /&gt;&lt;/a&gt;&lt;p align="justify"&gt;Remplir le formulaire et cliquer sur OK&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVlMP2CB21I/AAAAAAAAAV4/dO1N0Pef17Q/s1600-h/tuto23%5B5%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto23" border="0" alt="tuto23" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMQRIASUI/AAAAAAAAAV8/NtH8xgR5Lys/tuto23_thumb%5B3%5D.jpg?imgmax=800" width="315" height="253" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;A présent, cliquer sur le site web et cliquer sur "Paramètre de base":&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVlMRGnQxlI/AAAAAAAAAWA/9YFi50OBUW8/s1600-h/tuto33%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto33" border="0" alt="tuto33" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVlMRvimTDI/AAAAAAAAAWE/PunxSBB4SZQ/tuto33_thumb%5B2%5D.jpg?imgmax=800" width="558" height="345" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Cliquer sur "Sélectionner" et choisir Pool d'application&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_Nb_tnJCL_Vw/TVlMSAJa-wI/AAAAAAAAAWI/tNvpq9zvgBI/s1600-h/tuto34%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto34" border="0" alt="tuto34" src="http://lh4.ggpht.com/_Nb_tnJCL_Vw/TVlMSXH1QII/AAAAAAAAAWM/fRP9cq5MO0I/tuto34_thumb%5B1%5D.jpg?imgmax=800" width="430" height="308" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Si tout va bien, vous devriez pouvoir afficher l'idendité de votre compte de service avec le code PowerShell suivant :&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/TVlMS8KYN8I/AAAAAAAAAWQ/YTEkKoGQplU/s1600-h/tuto25%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto25" border="0" alt="tuto25" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMTZz8WoI/AAAAAAAAAWU/5-qZdjAWIBE/tuto25_thumb%5B1%5D.jpg?imgmax=800" width="500" height="411" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Les sources sont disponibles ici :&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;iframe title="Preview" scrolling="no" marginheight="0" marginwidth="0" frameborder="0" style="width:98px;height:115px;padding:0;background-color:#fcfcfc;" src="http://cid-d04381d7f0a60451.office.live.com/embedicon.aspx/DevInfra/PowerShell2AspNetPart1.zip"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;Dans le prochain article, nous verrons comment authentifier les utilisateurs et utiliser les données d'un formulaire ASP.NET pour exécuter un script externe.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-5453951341367757358?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/5453951341367757358/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=5453951341367757358' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/5453951341367757358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/5453951341367757358'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2011/02/execution-de-powershell-20-dans-un-site.html' title='Execution de PowerShell 2.0 dans un site web ASP.NET'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVk5nhNHkoI/AAAAAAAAATs/O4M5F48G-Uk/s72-c/tuto1_thumb1_thumb.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-642513126407515836</id><published>2011-02-01T22:23:00.001+01:00</published><updated>2011-02-01T22:23:57.831+01:00</updated><title type='text'></title><content type='html'>La suite &lt;a href="http://www.poshboard.com"&gt;ici&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-642513126407515836?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/642513126407515836/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=642513126407515836' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/642513126407515836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/642513126407515836'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2011/02/la-suite-ici.html' title=''/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-5673370173929763932</id><published>2010-07-30T11:37:00.003+02:00</published><updated>2010-07-30T11:48:10.692+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Offre emploi'/><title type='text'>Recherche développeurs .NET R&amp;D Silverlight/C#/PowerShell motivés</title><content type='html'>&lt;div style="text-align: center;"&gt;Une fois n'est pas coutume, voici une proposition d'embauche en rapport avec PowerShell, PoshBoard et les clients riches :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Je recherche pour le pôle R&amp;amp;D de Nelite deux développeurs .NET pour travailler sur des projets très innovants (et donc je pense très interessants !) autour de Silverlight , WPF, PowerShell et les interfaces tactiles, entre autre.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Vous aimez l'experimentation et les challenges techniques ? vous êtes interessé par les interfaces NUI et le multitouch ? vous voulez mettre en application concrète les toute dernières technologies de dev Microsoft avec l'appuie d'experts reconnus ?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Si vous avez déjà idéalement travaillé sur Silverlight, WPF et/ou PowerShell, que vous avez envie de mettre un grain d'innovation autour des technologies infrastructure, je vous attends avec impatience !&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Vous trouverez l'offre d'emploi &lt;a href="http://cadres.apec.fr/offres-emploi-cadres/0_0_0_25813690W________offre-d-emploi-developpeurs-r-d-net-silverlight-et-powershell-h-f.html"&gt;ici&lt;/a&gt;, vous pouvez aussi me contacter directement.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-5673370173929763932?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/5673370173929763932/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=5673370173929763932' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/5673370173929763932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/5673370173929763932'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2010/07/recherche-developpeurs-net-r.html' title='Recherche développeurs .NET R&amp;D Silverlight/C#/PowerShell motivés'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-1768998199104879303</id><published>2010-04-06T22:28:00.001+02:00</published><updated>2010-04-06T22:28:44.851+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Poshboard'/><title type='text'>Vidéo de PoshBoard 3.0 aux TechDays 2010</title><content type='html'>&lt;p&gt;Voici une vidéo avec une section dédiée à la présentation de PoshBoard 3.0 que j'ai faites aux TechDays 2010 :&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.programmez.com/video.php?video=95&amp;amp;titre=Quelques-technologies-presentees-aux-TechDays-2010"&gt;http://www.programmez.com/video.php?video=95&amp;amp;titre=Quelques-technologies-presentees-aux-TechDays-2010&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Merci à  &lt;a href="http://www.programmez.com/" target="_blank"&gt;Programmez!&lt;/a&gt;, &lt;a href="http://www.solutions-logiciels.com/" target="_blank"&gt;solutions logiciels&lt;/a&gt; et &lt;a href="http://www.supinfo.com/fr/webtv.aspx" target="_blank"&gt;SupInfo Web TV&lt;/a&gt; pour cette présentation !&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-1768998199104879303?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/1768998199104879303/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=1768998199104879303' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/1768998199104879303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/1768998199104879303'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2010/04/video-de-poshboard-30-aux-techdays-2010.html' title='Vidéo de PoshBoard 3.0 aux TechDays 2010'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-1632342274073550142</id><published>2010-04-01T12:27:00.002+02:00</published><updated>2010-04-01T12:29:27.448+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Poshboard'/><title type='text'>PoshBoard au WPC 2010 : feedback needed !</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: verdana, tahoma, sans-serif; font-size: 13px; color: rgb(104, 101, 103); line-height: 20px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Bonjour à tous,&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;j'aimerai proposer PoshBoard pour une nomination pour la prochaine WPC en juillet. Je suis à la recherche de retour d'experience utilisateur. Si vous aimez PoshBoard et l'utilisez en prod/preprod/test et en tirer des avantages, si vous pouvez me faire un petit retour par mail expliquant votre usage de la solution et comment elle vous aide dans la gestion de vos systèmes ce serait super !&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;vous pouvez m'envoyer un bref descriptif à cette adresse : poshboard[at]gmail.com&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Merci à vous!&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-1632342274073550142?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/1632342274073550142/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=1632342274073550142' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/1632342274073550142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/1632342274073550142'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2010/04/poshboard-au-wpc-2010-feedback-needed.html' title='PoshBoard au WPC 2010 : feedback needed !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-7810461211067910119</id><published>2010-01-06T11:36:00.004+01:00</published><updated>2010-01-06T12:25:47.073+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Techdays'/><category scheme='http://www.blogger.com/atom/ns#' term='Poshboard'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='MultiTouch'/><title type='text'>Silverlight MultiTouch PoshBoard démo !</title><content type='html'>La version 3.0 de PoshBoard sera compatible multitouch. Vous pourrez venir l'essayer sur écran tactcle sur le stand de &lt;a href="http://www.nelite.com"&gt;Nelite&lt;/a&gt; lors des MS TechDays 2010 les 8,9 et 10 février prochain !&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;&lt;a href="http://www.poshboard.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=35:poshboard-30-aux-ms-techdays-2010&amp;amp;catid=1:poshboard&amp;amp;Itemid=19&amp;amp;lang=fr"&gt;Infos et vidéos ici&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-7810461211067910119?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/7810461211067910119/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=7810461211067910119' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/7810461211067910119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/7810461211067910119'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2010/01/silverlight-multitouch-poshboard-demo.html' title='Silverlight MultiTouch PoshBoard démo !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-2980417410816546150</id><published>2009-10-15T22:15:00.002+02:00</published><updated>2009-10-15T22:18:49.536+02:00</updated><title type='text'>PoshBoard sur Get-Scripting</title><content type='html'>PoshBoard est à l'honneur dans le dernier PodCast de Get-Scripting que vous pouvez écouter ici : &lt;a href="http://get-scripting.blogspot.com/2009/10/get-scripting-podcast-episode-13.html"&gt;http://get-scripting.blogspot.com/2009/10/get-scripting-podcast-episode-13.html&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://get-scripting.blogspot.com/2009/10/get-scripting-podcast-episode-13.html"&gt;&lt;/a&gt;Merci à Alan et Jonathan pour l'accueil !&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Infos exclusives sur PoshBoard et les évolutions à venir.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-2980417410816546150?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/2980417410816546150/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=2980417410816546150' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/2980417410816546150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/2980417410816546150'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2009/10/poshboard-sur-get-scripting.html' title='PoshBoard sur Get-Scripting'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-8628508609206290118</id><published>2009-10-15T17:39:00.002+02:00</published><updated>2009-10-15T17:40:03.218+02:00</updated><title type='text'>Article sur la gestion des évènements avec PoshBoard 2.0</title><content type='html'>Je viens de publier un premier article sur la gestion des évènements avec PoshBoard 2.0&lt;br /&gt;&lt;br /&gt;Vous pouvez le &lt;a href="http://www.poshboard.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=27:working-with-events&amp;amp;catid=5:tutorials&amp;amp;Itemid=8&amp;amp;lang=fr"&gt;consulter ici&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-8628508609206290118?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/8628508609206290118/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=8628508609206290118' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/8628508609206290118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/8628508609206290118'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2009/10/article-sur-la-gestion-des-evenements.html' title='Article sur la gestion des évènements avec PoshBoard 2.0'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-9184417860723040382</id><published>2009-10-09T15:35:00.004+02:00</published><updated>2009-10-09T15:42:52.203+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Poshboard'/><title type='text'>Nouvelle version 2.0.1027 de PoshBoard</title><content type='html'>&lt;b&gt;Quoi de neuf ?&lt;/b&gt;&lt;div&gt;&lt;b&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Update 2.0.1027 (9th October 2009)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;[ADDED] mode "Dynamic Update ON/OFF" : quand vous tapez un script, si ce mode est mis à off, la page ne sera pas rafraichit automatiquement en temps réel &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;[ADDED] un raccourcis clavier pour cette nouvelle fonction : appuyez sur CTRL+U pour activer/desactiver ce mode (ou utiliser le bouton)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;[MODIFIED] Changement dans le gestionnaire de configuration, réorganisation et nouvelles fonctions&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;[ADDED]  Ajout de la gestion de l'attribut LiveUpdate pour les utilisateurs/ groupes. Cet attribut permet d'afficher ou non le bouton "Refresh Mode" pour les utilisateurs.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;[MODIFIED] L'impersonification des SuperAdmins est maintenant a "false" par défaut.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;[ADDED]  Deux nouveaux boutons dans le gestionnaire de config, permettant de monter ou descendre les portails dans le menu.&lt;/span&gt;&lt;/div&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;div&gt;Attention:&lt;/div&gt;&lt;div&gt;Cette nouvelle version ajoute un attribut aux utilisateurs/groupes dans le fichier de config. Les anciens fichiers ne fonctionneront donc plus avec cette version.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Mais pas de soucis : vous pouvez soit copier vos anciens scripts dans le nouveau fichier de configuration, soit simplement ajouter cet attribut à chacun de vos utilisateurs/groupes :&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;LiveUpdate="True"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Exemple :&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;member name="Everyone" membertype="Group" accesstype="Administrator" default="True" impersonate="True" liveupdate="True"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Enjoy :)&lt;/span&gt;&lt;/div&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-9184417860723040382?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/9184417860723040382/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=9184417860723040382' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/9184417860723040382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/9184417860723040382'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2009/10/nouvelle-version-201027-de-poshboard.html' title='Nouvelle version 2.0.1027 de PoshBoard'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-6224974329940728863</id><published>2009-10-02T13:32:00.003+02:00</published><updated>2009-10-05T00:09:27.648+02:00</updated><title type='text'>MVP PowerShell</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/SskdCvJCQ7I/AAAAAAAAASQ/coQa3XSp33w/s1600-h/MVP.jpg"&gt;&lt;/a&gt;J'ai eu la bonne surprise d'apprendre hier ma nomination en tant que MVP PowerShell !&lt;br /&gt;&lt;br /&gt;Une raison de plus de continuer à poster et promouvoir ce super langage :)&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/SskdCvJCQ7I/AAAAAAAAASQ/coQa3XSp33w/s200/MVP.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5388870361976816562" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 124px; height: 50px; " /&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-6224974329940728863?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/6224974329940728863/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=6224974329940728863' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/6224974329940728863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/6224974329940728863'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2009/10/mvp-powershell.html' title='MVP PowerShell'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Nb_tnJCL_Vw/SskdCvJCQ7I/AAAAAAAAASQ/coQa3XSp33w/s72-c/MVP.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-4618861318209813793</id><published>2009-09-29T14:04:00.002+02:00</published><updated>2009-09-29T14:05:09.157+02:00</updated><title type='text'>PoshBoard 2.0 disponible !</title><content type='html'>Une nouvelle version de PoshBoard est maintenant disponible : &lt;a href="http://www.poshboard.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=19:poshboard-20-available&amp;amp;catid=1:poshboard&amp;amp;Itemid=3&amp;amp;lang=fr"&gt;plus d'infos et une vidéo ici&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-4618861318209813793?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/4618861318209813793/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=4618861318209813793' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/4618861318209813793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/4618861318209813793'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2009/09/poshboard-20-disponible.html' title='PoshBoard 2.0 disponible !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-4497905509486800936</id><published>2009-06-17T23:29:00.001+02:00</published><updated>2009-06-17T23:30:10.799+02:00</updated><title type='text'>Le Snapin PowerShell de PoshBoard</title><content type='html'>&lt;h4&gt;&lt;a name="_Toc232878684"&gt;Architecture&lt;/a&gt; du snapin et des objets&lt;/h4&gt;  &lt;p align="justify"&gt;Poshboard est fournit avec un Snapin PowerShell contenant différents cmdlets. Ces cmdlets permettent de créer des objets compatibles avec le rendu de contrôles Silverlight dans PoshBoard. Les propriétés/méthodes utilisées pour ces cmdlets sont équivalentes aux propriétés que l’on peut trouver dans les contrôles Silverlight.&lt;/p&gt;  &lt;p align="justify"&gt;La logique des objets Silverlight est respecté le plus possible (ou simplifier pour les besoins de PoshBoard): vous trouverez dans les objets Silverlight (dans un projet dans votre Visual Studio par exemple) des propriétés portant le même nom que les propriétés des cmdlets. &lt;/p&gt;  &lt;p align="justify"&gt;Ceci permet de faciliter l’adaptation à l’outil pour un codeur PowerShell, tout en gardant une cohérence avec le modèle cible : vous pouvez vous aider d’exemples de code Silverlight pour créer vos contrôles.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/_Nb_tnJCL_Vw/SjlgCiX2HHI/AAAAAAAAAPI/hhsAAQOeTqY/s1600-h/clip_image0029.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image002" border="0" alt="clip_image002" src="http://lh4.ggpht.com/_Nb_tnJCL_Vw/SjlgDlpAGUI/AAAAAAAAAPM/UmTtFAOQaRs/clip_image002_thumb6.jpg?imgmax=800" width="493" height="373" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;b&gt;Note:&lt;/b&gt; Toute les propriétés des contrôles Silverlight ne sont pas reproduites, ceci pour plusieurs raisons :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Certaines propriétés ne sont pas utiles dans le contexte de PoshBoard et complexifieraient le modèle et l’adaptation.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;La volonté d’éviter des processus de reflection sur les objets Silverlight dans un premier temps, pour garder de bonnes performances.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Ou parfois simplement par manque de temps ;-)&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;L’idée maitresse est de conserver un modèle simple, facile à comprendre. Dans le futur, si de nouvelles propriétés apparaissent comme utile, elles seront ajouter à la solution dans de futures mise-à-jour.&lt;/p&gt;  &lt;p align="justify"&gt;Les développeurs .NET ayant déjà une petite expérience avec le développement Silverlight pourront facilement créer les correspondances en PowerShell.&lt;/p&gt;  &lt;h4&gt;Relation entre le Snapin, PoshBoard et Silverlight&lt;/h4&gt;  &lt;p align="justify"&gt;Poshboard utilise WCF (httpPollingDuplex et BasicHttpBinding) pour établir la communication entre le client Silverlight et le serveur. Les objets PowerShell sont créés par les scripts initié par l’administrateur, et ces objets sont ensuite convertis en contrôles Silverlight dynamiquement dans l’interface. &lt;/p&gt;  &lt;p align="justify"&gt;Vous pouvez par ailleurs utiliser tout type de code PowerShell lors de la création de vos interfaces : ceci permet de profiter du dynamisme de PowerShell pour définir les paramètres des contrôles Silverlight et du contenu.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_Nb_tnJCL_Vw/SjlgEMOSpOI/AAAAAAAAAPQ/Hfac_5vzWEU/s1600-h/clip_image00254.gif"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image002[5]" border="0" alt="clip_image002[5]" src="http://lh5.ggpht.com/_Nb_tnJCL_Vw/SjlgE6Goy3I/AAAAAAAAAPU/eSeKjfNKHnc/clip_image0025_thumb2.gif?imgmax=800" width="448" height="308" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;i&gt;Relation entre WCF, PowerShell et PoshBoard&lt;/i&gt;&lt;/p&gt;  &lt;h3&gt;&lt;em&gt;&lt;/em&gt;&lt;/h3&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;Installation du snapin&lt;/h3&gt;  &lt;p align="justify"&gt;L’installation est simple. Vous n’avez pas besoin d’installer PoshBoard pour utiliser les cmdlets : vous pouvez utiliser la console pour créer vos interfaces sous forme d’objets PowerShell.&lt;/p&gt;  &lt;p align="justify"&gt;Voici comment l’installer :&lt;/p&gt;  &lt;p align="justify"&gt;Copier les 2 dll’s du fichier zip dans un repertoire de votre serveur ou station de travail (exemple : c:\ressources)&lt;/p&gt;  &lt;p align="justify"&gt;Lancer la ligne de commande suivante (avec les droits admins pour Vista / 2K8 / Seven) :&lt;/p&gt;  &lt;p align="justify"&gt;x86 :&lt;/p&gt;  &lt;p&gt;c:\Windows\Microsoft.NET\Framework\v2.0.50727\installutil.exe c:\ressources\poshboard.dll&lt;/p&gt;  &lt;p&gt;x64: &lt;/p&gt;  &lt;p&gt;c:\Windows\Microsoft.NET\Framework64\v2.0.50727\installutil.exe c:\ressources\poshboard.dll&lt;/p&gt;  &lt;p&gt;(x64 : lancer aussi la première ligne pour rendre le snapin disponible côté PoshBoard)&lt;/p&gt;  &lt;p&gt;Ouvrez maintenant une console PowerShell et tapez :&lt;/p&gt;  &lt;p&gt;Add-PSSnapin poshboard&lt;/p&gt;  &lt;p&gt;List all cmdlets &lt;/p&gt;  &lt;p&gt;get-command *PB* &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a name="_Toc232878688"&gt;Les cmdlets&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;Voici la liste des cmdlets :    &lt;table border="1" cellspacing="0" cellpadding="0" width="539"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p align="center"&gt;&lt;strong&gt;Cmdlets&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p align="center"&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;           &lt;p align="center"&gt;&lt;strong&gt;&amp;#160;&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBAgDataGrid&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td width="359"&gt;           &lt;p&gt;Créer une DataGrid Silverlight (basé sur le contrôle AgDataGrid)&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh3.ggpht.com/_Nb_tnJCL_Vw/SjlgFD1dAKI/AAAAAAAAAPY/tp4m5N1esNI/s1600-h/clip_image002107.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="clip_image002[10]" border="0" alt="clip_image002[10]" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/SjlgF12lWxI/AAAAAAAAAPc/d8nBUjmhdwE/clip_image00210_thumb5.jpg?imgmax=800" width="41" height="47" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBButton&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Créer un bouton Silverlight&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/SjlgGRdOvsI/AAAAAAAAAPg/_DKYOVv_mLc/s1600-h/clip_image0047.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="clip_image004" border="0" alt="clip_image004" align="left" src="http://lh5.ggpht.com/_Nb_tnJCL_Vw/SjlgHGwnunI/AAAAAAAAAPk/ZxOidCwd1D0/clip_image004_thumb2.jpg?imgmax=800" width="72" height="22" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBChart&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Créer un element graph (basé sur Visifire)&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh6.ggpht.com/_Nb_tnJCL_Vw/SjlgHZpDajI/AAAAAAAAAPo/Z1C8qq_3IXA/s1600-h/clip_image00610.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="clip_image006" border="0" alt="clip_image006" align="left" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/SjlgH8tytrI/AAAAAAAAAPs/KMxDW8pLhv0/clip_image006_thumb1.jpg?imgmax=800" width="34" height="40" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBComboBox&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Créer une ComboBox Silverlight&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh3.ggpht.com/_Nb_tnJCL_Vw/SjlgIGWlWtI/AAAAAAAAAPw/NQX-wzYJZ9Q/s1600-h/clip_image0085.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="clip_image008" border="0" alt="clip_image008" align="left" src="http://lh4.ggpht.com/_Nb_tnJCL_Vw/SjlgIUjhDDI/AAAAAAAAAP0/6xqh4oFdkHo/clip_image008_thumb2.jpg?imgmax=800" width="74" height="41" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBContainer&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Créer une Grid Silverlight (le containeur de type “grille” pour les autres contrôles)&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh3.ggpht.com/_Nb_tnJCL_Vw/SjlgIi8X5rI/AAAAAAAAAP4/jRkRWj2A3Tc/s1600-h/clip_image0106.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="clip_image010" border="0" alt="clip_image010" align="left" src="http://lh5.ggpht.com/_Nb_tnJCL_Vw/SjlgJBZffaI/AAAAAAAAAP8/Rb6xAjwwFhw/clip_image010_thumb1.jpg?imgmax=800" width="64" height="44" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBDataSerie&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Créer un objet DataSerie (utilisé pour les objets charts Visifire)&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh3.ggpht.com/_Nb_tnJCL_Vw/SjlgJsYzM4I/AAAAAAAAAQA/j6XkjeRRJh4/s1600-h/clip_image00622.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image006[2]" border="0" alt="clip_image006[2]" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/SjlgKGZRChI/AAAAAAAAAQE/xkX0AvERF0g/clip_image0062_thumb.jpg?imgmax=800" width="34" height="40" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBElement&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Créer un objet vide (sans type ni propriétés, évènements spécifiques)&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh6.ggpht.com/_Nb_tnJCL_Vw/SjlgKR7T5II/AAAAAAAAAQI/AULIE-wIVQ8/s1600-h/clip_image0113.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image011" border="0" alt="clip_image011" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/SjlgKh4yJAI/AAAAAAAAAQM/Q8UNCWBWw2I/clip_image011_thumb.jpg?imgmax=800" width="48" height="40" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBEvent&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Créer un évènement (pouvant être intégrer aux objets dérivés de PBElement)&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/SjlgK8wwF-I/AAAAAAAAAQQ/Qh6xgtyPvxw/s1600-h/clip_image0124.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image012" border="0" alt="clip_image012" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/SjlgLnvGxhI/AAAAAAAAAQU/Rk-KltEd7b8/clip_image012_thumb.jpg?imgmax=800" width="26" height="25" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBFlipBook&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Créer un FlipBook (basé sur le contrôle SLMItsu Flip Page)&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBGridData&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Créer un objet de données pour une&amp;#160; PBDataGrid&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh3.ggpht.com/_Nb_tnJCL_Vw/SjlgMGh5ajI/AAAAAAAAAQY/FqIlLeGnWJc/s1600-h/clip_image0133.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image013" border="0" alt="clip_image013" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/SjlgMuiyUFI/AAAAAAAAAQc/898P71JM2HQ/clip_image013_thumb.jpg?imgmax=800" width="34" height="39" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBTextBlock&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Créer un bloc de texte Silverlight&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh4.ggpht.com/_Nb_tnJCL_Vw/SjlgM6RDwsI/AAAAAAAAAQg/P2ZGzLQzkFY/s1600-h/clip_image0155.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image015" border="0" alt="clip_image015" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/SjlgNQaUERI/AAAAAAAAAQk/f9DvZcynUok/clip_image015_thumb2.jpg?imgmax=800" width="74" height="21" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBTextBox&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Créer une TextBox Silverlight&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh3.ggpht.com/_Nb_tnJCL_Vw/SjlgN_geFgI/AAAAAAAAAQo/USaNlf1K7Ac/s1600-h/clip_image0174.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image017" border="0" alt="clip_image017" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/SjlgObu0cxI/AAAAAAAAAQs/2C7EcHisIjw/clip_image017_thumb1.jpg?imgmax=800" width="89" height="21" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;Add-PBDataSerie&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Ajouter un objet PBDataSerie à un objet PBChart&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh4.ggpht.com/_Nb_tnJCL_Vw/SjlgOu4wQ_I/AAAAAAAAAQw/yxTKVBzgRpE/s1600-h/clip_image00632.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image006[3]" border="0" alt="clip_image006[3]" src="http://lh5.ggpht.com/_Nb_tnJCL_Vw/SjlgO4RgyfI/AAAAAAAAAQ0/ctMekAhjd2E/clip_image0063_thumb.jpg?imgmax=800" width="34" height="40" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;Add-PBElement&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Ajouter un élément (dérivé de PBElement) à un containeur type PBContainer&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh4.ggpht.com/_Nb_tnJCL_Vw/SjlgPVjpOLI/AAAAAAAAAQ4/vA59oUdHGgY/s1600-h/clip_image01012.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image010[1]" border="0" alt="clip_image010[1]" src="http://lh4.ggpht.com/_Nb_tnJCL_Vw/SjlgP2mbJhI/AAAAAAAAAQ8/0vfXKbe3xcU/clip_image0101_thumb.jpg?imgmax=800" width="64" height="44" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;Add-PBEvent&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Ajouter un objet Evenement à un contrôle&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/SjlgQPKTHCI/AAAAAAAAARA/6QRD2PoW5Bc/s1600-h/clip_image01212.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image012[1]" border="0" alt="clip_image012[1]" src="http://lh4.ggpht.com/_Nb_tnJCL_Vw/SjlgQVRFDtI/AAAAAAAAARE/g8c_NYmV1ck/clip_image0121_thumb.jpg?imgmax=800" width="26" height="25" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;Add-PBGridData&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Add un objet données (PBGridData) à un objet PBDataGrid&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh3.ggpht.com/_Nb_tnJCL_Vw/SjlgQzLSevI/AAAAAAAAARI/itbVAnyIdL0/s1600-h/clip_image002112.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[11]" border="0" alt="clip_image002[11]" src="http://lh4.ggpht.com/_Nb_tnJCL_Vw/SjlgROY6rHI/AAAAAAAAARM/zLNQ5rXATMY/clip_image00211_thumb.jpg?imgmax=800" width="41" height="47" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Nous verrons dans le prochain post ces objets dans le détail, et comment créer vos premiers widgets.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-4497905509486800936?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/4497905509486800936/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=4497905509486800936' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/4497905509486800936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/4497905509486800936'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2009/06/le-snapin-powershell-de-poshboard.html' title='Le Snapin PowerShell de PoshBoard'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_Nb_tnJCL_Vw/SjlgDlpAGUI/AAAAAAAAAPM/UmTtFAOQaRs/s72-c/clip_image002_thumb6.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-4902155268464427169</id><published>2009-06-11T16:48:00.002+02:00</published><updated>2009-06-11T16:49:20.117+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Poshboard'/><title type='text'>Poshboard Beta 1 Rev 3 sur Codeplex</title><content type='html'>La rev 3 de Poshboard Beta 1 est disponible &lt;a href="http://poshboard.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=28457"&gt;ici sur codeplex&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Change log :&lt;/div&gt;&lt;div&gt;&lt;div&gt;[CHANGED] default widgets height to 400 px&lt;/div&gt;&lt;div&gt;[CHANGED] Widgets icons and order in add stuff menu&lt;/div&gt;&lt;div&gt;[ADDED] 3 new properties to Chart Widgets : AnimationEnabled and scrollerenabled for PBChart, LineTickness for PBDataSerie&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;AnimationEnabled can be set to true for animation (works only for "shot" update, play update disable this boolean)&lt;/div&gt;&lt;div&gt;ScrollerEnabled enable or disable the scroller in chart (now disable by default): if you disable this property, chart will "fit"&lt;/div&gt;&lt;div&gt;your current control (Datapoint bar/column... size will change dynamically)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;LineTickness : change the tickness of line in charts (1 for smallest line)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[ADDED] 1 new property to Datagrid : ShowGroupPanel (Boolean)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Enable or disable the top group panel (for datagrid filtering)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[ADDED] FlipBook Widget&lt;/div&gt;&lt;div&gt;[ADDED] BlackLight Dashboard Widgets&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-4902155268464427169?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/4902155268464427169/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=4902155268464427169' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/4902155268464427169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/4902155268464427169'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2009/06/poshboard-beta-1-rev-3-sur-codeplex.html' title='Poshboard Beta 1 Rev 3 sur Codeplex'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-2103058614695749917</id><published>2009-06-08T13:45:00.003+02:00</published><updated>2009-06-08T13:57:40.587+02:00</updated><title type='text'>Poshboard V1 Beta 1 Disponible Aujourd'hui !</title><content type='html'>L'article de présentation ici : &lt;a href="http://www.poshboard.com/"&gt;http://www.poshboard.com&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;téléchargez la release ici : &lt;a href="http://poshboard.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=28457"&gt;http://poshboard.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=28457&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;Enjoy !&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-2103058614695749917?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/2103058614695749917/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=2103058614695749917' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/2103058614695749917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/2103058614695749917'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2009/06/poshboard-v1-beta-1-disponible.html' title='Poshboard V1 Beta 1 Disponible Aujourd&apos;hui !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-5617807652528090730</id><published>2009-04-30T23:25:00.008+02:00</published><updated>2009-05-01T00:02:26.110+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='Poshboard'/><title type='text'>Poshboard V1 : Présentation technique 1</title><content type='html'>&lt;div style="text-align: justify;"&gt;Le développement de la version finale de Poshboard (prévue pour le mois de Juin) est sur la bonne voie.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;En prévision de cette sortie, je vous propose une série de vidéo de présentation technique dont voici le premier volet :&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;center&gt;&lt;object width="480" height="270"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4417893&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1"&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=4417893&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="480" height="270"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/center&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Je vous présente dans cette première vidéo les fonctionnalités suivantes :&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;1) &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Le mode "live update" en mode push serveur&lt;/span&gt;. &lt;/p&gt;&lt;p style="text-align: justify;"&gt;Poshboard s'appuie sur le mode polling duplex de WCF pour permettre le rafraichissement dynamique du résultat des scripts (sortie console, graphique, tableau...)&lt;/p&gt;&lt;p style="text-align: justify;"&gt;2) &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Le widget "Poshboard Tester"&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Ce widget s'appuie sur ce mode de rafraichissement et permet de tester les scripts. Vous verrez différents exemples de script et le mode statistique.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;3) &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Poshboard PowerShell snapins : objet chart&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Découvrez le premier snapin pour Poshboard qui propose différents cmdlets permettant la création de graphique indépendemment du portail, facilitant le design et le debug de vos graphiques : l'utilisation des pipelines, la visualisation des objets générés...&lt;/p&gt;&lt;p style="text-align: justify;"&gt;N'hésitez pas à poster vos réactions, suggestions sur &lt;a href="http://www.poshboard.com/"&gt;le forum de Poshboard&lt;/a&gt; ! vos retours aideront à la finalisation du portail ;)&lt;/p&gt;&lt;p style="text-align: center;"&gt;Bon visionnage !&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-5617807652528090730?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/5617807652528090730/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=5617807652528090730' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/5617807652528090730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/5617807652528090730'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2009/04/poshboard-v1-presentation-technique-1.html' title='Poshboard V1 : Présentation technique 1'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-7232836739421535644</id><published>2009-03-20T15:33:00.002+01:00</published><updated>2009-03-20T15:34:15.704+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Poshboard'/><title type='text'>Guide de publication de PoshBoard sur Windows 2008 - IIS7</title><content type='html'>Le guide de publication de PoshBoard est disponible &lt;a href="http://www.poshboard.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=4:installation-guide-windows-2008&amp;amp;catid=5:tutorials&amp;amp;Itemid=8&amp;amp;lang=fr"&gt;ici sur poshboard.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-7232836739421535644?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/7232836739421535644/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=7232836739421535644' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/7232836739421535644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/7232836739421535644'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2009/03/guide-de-publication-de-poshboard-sur.html' title='Guide de publication de PoshBoard sur Windows 2008 - IIS7'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-7224884495729898816</id><published>2009-03-13T01:01:00.009+01:00</published><updated>2009-03-13T14:46:37.833+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Poshboard'/><title type='text'>Site communautaire PoshBoard ouvert !</title><content type='html'>&lt;div style="TEXT-ALIGN: center"&gt;Retroussage de manches et plongée dans les CMS :&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;le site web de PoshBoard est ouvert !&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;a href="http://www.poshboard.com/"&gt;http://www.poshboard.com/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;Forums, tutoriaux, communauté, suivi du développement...&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;Rejoignez nous vite !&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;Note : le site est multilingue français/anglais, cliquez sur le drapeau au dessus du menu à gauche pour choisir la langue qui vous convient.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-7224884495729898816?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/7224884495729898816/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=7224884495729898816' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/7224884495729898816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/7224884495729898816'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2009/03/site-communautaire-poshboard-ouvert.html' title='Site communautaire PoshBoard ouvert !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-9004113831312180632</id><published>2009-03-05T17:34:00.006+01:00</published><updated>2009-03-06T01:39:02.917+01:00</updated><title type='text'>Release 0.4.2 de poshboard (BUGFIX)</title><content type='html'>Je viens de mettre en ligne une nouvelle release de PoshBoard comportant les bugfixes suivants :&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* Modification de visifire.pS1 (gestion des labels pour l'axe X avec beaucoup de données)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* Le code source avait des références invalides vers les dll de certaines librairies silverlight&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ceci provoquait des erreurs au build et demandait un re-référencement des dll. c'est corrigé, le projet peut maintenant être buildé directement après download&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;La taille globale de l'archive à été optimisée &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;edit : &lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;pour utiliser AgDatagrid, vous devez  télécharger &lt;a href="http://www.devexpress.com/Products/NET/Controls/Silverlight/Grid/"&gt;les sources sur le site de devExpress&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Ensuite, vous n'avez plus qu'à extraire le fichier :&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;"C:\Program Files\Developer Express\Free Controls for Silverlight\Sources\DevExpress.Dll\DevExpress.AgDataGrid.v8.2.dll"&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;dans le dossier "&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Components&lt;/span&gt;" de la solution, et lancez le build.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Meilleure prise en charge des charts avec axes X long (label mieux répartis)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://poshboard.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24132"&gt;vous pouvez la télécharger ici&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-9004113831312180632?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/9004113831312180632/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=9004113831312180632' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/9004113831312180632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/9004113831312180632'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2009/03/release-042-de-poshboard-bugfix.html' title='Release 0.4.2 de poshboard (BUGFIX)'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-1325668709366858687</id><published>2009-03-03T19:46:00.013+01:00</published><updated>2009-03-03T23:17:26.882+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Poshboard'/><title type='text'>PoshBoard 0.4 : quelques infos sur le refresher et autres</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;a href="http://poshboard.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24132"&gt;La release a été mise à jour (0.4.1)&lt;/a&gt; pour prendre en compte la correction de bug proposée par Christopher. Merci ;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Voici quelques renseignements liées à mes discussions avec les fringants premiers poshboarders :&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Installer le site web de poshboard&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://poshboard.codeplex.com/Thread/View.aspx?ThreadId=49074"&gt;Une discussion est lancée sur codeplex&lt;/a&gt; au sujet de l'install où vous trouverez des infos pratiques,  le temps que le guide utilisateur soit mis à jour. Vous pouvez toujours consulter l'ancien user guide &lt;a href="http://poshboard.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=21218"&gt;ICI&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Les REFRESHERS&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Les 2 refreshers (celui dans le header "Refresh Enabled / Disabled" et le widget refresh) n'ont pas le même fonctionnement.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Refresher dans le header&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/Sa18EXsJ04I/AAAAAAAAAMw/CNAejtHQ3gM/s1600-h/header.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 28px;" src="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/Sa18EXsJ04I/AAAAAAAAAMw/CNAejtHQ3gM/s400/header.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5309035950260212610" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Celui-ci ajoute un paramètre dans l'url : /Default.aspx?Refresh=true &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ce paramètre est vérifié dans chaque widgets au chargement de la page. Si "Refresh" est égal à true, les scripts sont réexécutés. Le bouton "refresh enabled" active ce paramètre, l'autre bouton passe celui-ci à "false".&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;edit : &lt;span class="Apple-style-span" style="font-weight: normal;"&gt;un bug est identifié avec le changement de pages et le refresh, c'est en cours de résolution.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Le widget refresher&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify; "&gt;Le refresher est encore très basique, il sera considérablement étendu dans la V1. Pour le moment, il prend une petite chaine au format csv :&lt;/div&gt;&lt;div style="text-align: justify; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify; "&gt;ArgumentSource;ArgumentCible.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify; "&gt;Le widget créé une variable de session. Idem, celle ci est checkée au chargement des autres widgets au postback de la page, si une valeur existe, le widget tente de changer le texte du premier argument avec celui du deuxième (si il n'existe pas dans le script, rien ne se passe).&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;exemple&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ce script dans un widget PowerShellOutput :&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;gwmi Win32_logicalDisk –Filter “DriveType = 3” -ComputerName @MachineName@&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;dans le refresher, mettre :&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;@MachineName@;MYSERVER001&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Par contre, le script d'origine n'est pas modifié, ceci permet de garder l'intégrité des scripts et de permettre des refresh avec d'autres paramètres. Un fois la page entièrement chargée, la variable de session est jetée sans remord.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;La version finale du refresher permettra de définir des interfaces plus pratique, plus d'infos bientôt.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Voilà pour commencer, d'autres posts à venir &lt;span class="Apple-style-span" style="font-style: italic;"&gt;(notamment sur ces intrigantes variables constituées de caractères exotiques type £,µ, ¤ et autres §)&lt;/span&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-1325668709366858687?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/1325668709366858687/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=1325668709366858687' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/1325668709366858687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/1325668709366858687'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2009/03/poshboard-quelques-precisions-sur-les.html' title='PoshBoard 0.4 : quelques infos sur le refresher et autres'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Nb_tnJCL_Vw/Sa18EXsJ04I/AAAAAAAAAMw/CNAejtHQ3gM/s72-c/header.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-6049475841636074634</id><published>2009-03-03T01:59:00.013+01:00</published><updated>2009-03-03T12:16:50.105+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Poshboard'/><title type='text'>PoshBoard 0.4 disponible !</title><content type='html'>&lt;span class="Apple-style-span"  style=" ;font-family:'Times New Roman';"&gt;&lt;div style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%/normal Georgia, serif; text-align: left; "&gt;&lt;div style="text-align: center; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Je suis ravi de vous annoncer la sortie de la version 0.4 de PoshBoard &lt;/span&gt;&lt;a href="http://www.codeplex.com/poshboard"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;a href="http://www.codeplex.com/poshboard"&gt;Ici sur codeplex&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center; "&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Autre bonne nouvelle, c'est la dernière version 0.x de Poshboard : &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;nous visons maintenant la V1 !&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Maintenant que les choses sont plus claires et l'architecture cible finalisée (sur le papier (voir avant tout dans la tête)), il va y avoir un gros refactoring du code pour atteindre les objectifs voulus. Pas mal de choses vont être simplifiées et/ou optimisées afin de vous apporter la meilleure experience possible avec le portail (et avoir le code le plus souple possible)&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left; "&gt;Mais parlons un peu de cette V4 :&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Dans cette version, vous allez pouvoir tester les nouveaux widgets &lt;a href="http://blogs.technet.com/mstechdays/archive/2009/02/13/les-techdays-2009-fin.aspx"&gt;présentés aux Techdays&lt;/a&gt;, basés sur &lt;a href="http://blacklight.codeplex.com/"&gt;Blacklight&lt;/a&gt; et l'excellent &lt;a href="http://www.codeplex.com/wpfbookcontrol"&gt;Silverlight book control&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Le Refresher est à nouveau de la partie, ainsi qu'une nouvelle possibilité de rafraichir (ou pas) les scripts de la page via un simple clic de bouton.&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/SayHkpkJxKI/AAAAAAAAAMo/RwdcaCEdFU8/s1600-h/poshboard5.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 256px;" src="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/SayHkpkJxKI/AAAAAAAAAMo/RwdcaCEdFU8/s400/poshboard5.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5308767124465501346" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Vous aurez aussi l'occasion de tester le service web WCF PowerShell dans les widgets flipbook et wcfPowershelloutput&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;C'est toujours (et plus que jamais) en Beta, et pas mal de choses ne sont pas aussi bien implémentées qu'elles pourront l'être, mais vous allez pouvoir néanmoins vous donner une petite idée de ce vers quoi nous voulons aller.&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Je vais poster différents tutorial sur cette version et comment l'utiliser. Des exemples de scripts sont dispos sur codeplex pour vour aider à utiliser les derniers contrôles.&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Amusez vous bien !&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center; "&gt;N'hésitez pas à me laisser un commentaire sur cette nouvelle release&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-6049475841636074634?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/6049475841636074634/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=6049475841636074634' title='3 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/6049475841636074634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/6049475841636074634'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2009/03/poshboard-04-disponible.html' title='PoshBoard 0.4 disponible !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Nb_tnJCL_Vw/SayHkpkJxKI/AAAAAAAAAMo/RwdcaCEdFU8/s72-c/poshboard5.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-6269551784568714403</id><published>2009-02-19T23:27:00.015+01:00</published><updated>2009-02-23T10:57:19.719+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='0.4'/><category scheme='http://www.blogger.com/atom/ns#' term='Techdays'/><category scheme='http://www.blogger.com/atom/ns#' term='Poshboard'/><title type='text'>Webcast PoshBoard v0.4 : version Techdays</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;English version available &lt;a href="http://devinfra-us.blogspot.com/2009/02/poshboard-04-webcast-on-techdays-2009.html"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Voici le webcast reprenant la version présentée aux Techdays 2009&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="500" height="281"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3285213&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1"&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=3285213&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="281"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/3285213"&gt;Poshboard 0.4 edition Techdays 2009&lt;/a&gt; from &lt;a href="http://vimeo.com/user301430"&gt;Antoine Habert&lt;/a&gt; on &lt;a href="http://vimeo.com/"&gt;Vimeo&lt;/a&gt;.&lt;/center&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Important : Utilisez le mode "HD" et passez en FullScreen pour plus de confort&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Au programme :&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: rgb(62, 62, 62); font-family: Verdana; white-space: pre-wrap; "&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;1) Introduction à PoshBoard (01:15)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: rgb(62, 62, 62); font-family: Verdana; white-space: pre-wrap; "&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;2) Démo sur les contrôles de base (06:24)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: rgb(62, 62, 62); font-family: Verdana; white-space: pre-wrap; "&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;3) PowerShell et service web (11:08)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: rgb(62, 62, 62); font-family: Verdana; white-space: pre-wrap; "&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;4) les nouveaux widgets (Blacklight, WCF PowerShell output, Mitsu Flipbook control+Visifire) (13:13)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: rgb(62, 62, 62); font-family: Verdana; white-space: pre-wrap; "&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;5) Roadmap vers la V1 (22:25)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Bon visionnage !&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Credits :&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Dropthings : &lt;a href="http://www.codeplex.com/dropthings"&gt;http://www.codeplex.com/dropthings&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Visifire : &lt;a href="http://www.visifire.com/"&gt;http://www.visifire.com&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;BlackLight : &lt;a href="http://www.codeplex.com/blacklight"&gt;http://www.codeplex.com/blacklight&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Mitsu Flipbook control : &lt;a href="http://www.codeplex.com/wpfbookcontrol"&gt;http://www.codeplex.com/wpfbookcontrol&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Silverlight 3D flip animation  : &lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;a href="http://joel.neubeck.net/2008/04/silverlight-3d-flip-animation/"&gt;http://joel.neubeck.net/2008/04/silverlight-3d-flip-animation/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;DevExpress AgDatagrid :&lt;/span&gt; &lt;a href="http://devexpress.com/Products/NET/Controls/Silverlight/Grid/"&gt;http://devexpress.com/Products/NET/Controls/Silverlight/Grid/&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-6269551784568714403?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/6269551784568714403/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=6269551784568714403' title='15 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/6269551784568714403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/6269551784568714403'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2009/02/webcast-poshboard-v04.html' title='Webcast PoshBoard v0.4 : version Techdays'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-661170471686760985</id><published>2009-02-19T12:51:00.003+01:00</published><updated>2009-02-20T14:06:07.097+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Techdays'/><category scheme='http://www.blogger.com/atom/ns#' term='Poshboard'/><title type='text'>Video PoshBoard 0.4 en approche</title><content type='html'>&lt;div style="text-align: justify;"&gt;Juste pour vous informer que la vidéo de présentation de la version de PoshBoard présentée au Techdays est dans la boite !&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Reste le retraitement du webcast et l'upload sur Vimeo, le tout devrait donc être dispo dans la journée.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;edit : &lt;/span&gt;la vidéo est disponible &lt;a href="http://devinfra.blogspot.com/2009/02/webcast-poshboard-v04.html"&gt;ici&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-661170471686760985?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/661170471686760985/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=661170471686760985' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/661170471686760985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/661170471686760985'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2009/02/video-poshboard-04-en-approche.html' title='Video PoshBoard 0.4 en approche'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-3201694707052632614</id><published>2009-02-13T12:27:00.009+01:00</published><updated>2009-02-13T12:33:51.871+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Techdays'/><category scheme='http://www.blogger.com/atom/ns#' term='Poshboard'/><title type='text'>Retour des techdays</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Ce fut un réel plaisir de présenter PoshBoard hier au Techdays : superbe salle, public sympa, "presque" aucun effet demo venant pimenter la session (presque...)&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Merci à tout les participants !&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Vous avez loupé l'évènement ?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;vous voulez voir les dernières nouveautés de PoshBoard ?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Vous ne voulez pas attendre la diffusion des webcasts des Techdays ?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Jour de Chance !&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style=" font-weight: bold;font-size:18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Je prépare pour la semaine prochaine la diffusion d'un webcast reprenant l'ensemble des nouveautés présentées hier et encore plus.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Vous pourrez découvrir les nouveaux widgets silverlight, la gestion de powershell par webservice, la roadmap vers la V1 et toute les autres nouveautés en stock...&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;et bien sûr la diffusion imminente de la version de PoshBoard présentée hier !&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Je vous donne donc rendez-vous la semaine prochaine pour découvrir tout cela en vidéo.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-3201694707052632614?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/3201694707052632614/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=3201694707052632614' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/3201694707052632614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/3201694707052632614'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2009/02/retour-des-techdays.html' title='Retour des techdays'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-5031219406805392638</id><published>2009-02-04T00:51:00.001+01:00</published><updated>2009-02-04T01:09:30.390+01:00</updated><title type='text'>PoshBoard en démo aux Techdays 2009</title><content type='html'>&lt;p&gt;Si vous désirez voir les dernières avancées de PoshBoard, mettez donc une RTT de côté pour jeudi prochain pour venir au Techdays 2009 !&lt;/p&gt;  &lt;p&gt;Je présenterai une session avec Gregory Schiro où je ferai une démo de la dernière évolution de PoshBoard.&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;Quand ?&lt;/strong&gt;&lt;/p&gt;  &lt;p align="center"&gt;le 12 février de 16h à 17h.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://galilee.microsoft.fr/TechDays2009/Session.aspx?CellID=c378439d-4978-4225-be03-f1b73e607ed8"&gt;Infos ici&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;Au programme ?&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;la mise en œuvre live from scratch d’un portail d’admin avec PoshBoard, autour d’Active Directory, Exchange et windows 2008. Amusons nous à créer un dashboard en 10 minutes.&lt;/p&gt;  &lt;p&gt;PowerShell et webservices : utilisation de powershell au sein même de contrôle Silverlight dans PoshBoard&lt;/p&gt;  &lt;p&gt;Demonstration de l’intégration de nouveaux widgets basées sur les contrôles &lt;a href="http://www.codeplex.com/blacklight"&gt;BlackLight&lt;/a&gt; :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://img3.imageshack.us/img3/8194/blacklightvw0.jpg"&gt;&lt;img title="BlackLight" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="283" alt="BlackLight" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/SYjXrLCOpnI/AAAAAAAAAMU/zAK7H1_pH2w/BlackLight%5B4%5D.jpg?imgmax=800" width="499" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="center"&gt;Un dashboard dans un dashboard, ça donne quoi ? :)&lt;/p&gt;  &lt;p align="left"&gt;Une belle brochette de plugins open source à la portée de tout pratiquant de powershell : découvrez comment créer le widget ci-dessus en &lt;strong&gt;4 lignes de scripts PowerShell&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;La nouvelle version de PoshBoard sortira dans la foulée, avec quelques nouvelles vidéos de tutorial sur les différents aspects de développement autour de la future version 1.0.&lt;/p&gt;  &lt;p align="center"&gt;Au plaisir de vous voir jeudi prochain ;)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-5031219406805392638?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/5031219406805392638/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=5031219406805392638' title='7 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/5031219406805392638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/5031219406805392638'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2009/02/poshboard-en-demo-aux-techdays-2009_04.html' title='PoshBoard en démo aux Techdays 2009'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_Nb_tnJCL_Vw/SYjXrLCOpnI/AAAAAAAAAMU/zAK7H1_pH2w/s72-c/BlackLight%5B4%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-4690521578832062107</id><published>2009-01-05T12:14:00.005+01:00</published><updated>2009-01-05T17:19:12.446+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Poshboard'/><title type='text'>Guide installation rapide de PoshBoard</title><content type='html'>Voici les étapes pour pouvoir utiliser poshboard avec Web Developper Express SP1 pour XP/VISTA/2003/2008 :&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="color: rgb(48, 51, 45);   font-family:'Segoe UI';font-size:13px;"&gt;&lt;li style="margin-left: 0px; margin-bottom: 0.3em; margin-top: 0.3em; vertical-align: middle; "&gt;1) Installer PowerShell &lt;a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx" class="externalLink" style="text-decoration: underline; color: rgb(62, 98, 166); "&gt;ici&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-left: 0px; margin-bottom: 0.3em; margin-top: 0.3em; vertical-align: middle; "&gt;2) Installer le client Silverlight 2 &lt;a href="http://www.silverlight.net/" class="externalLink" style="text-decoration: underline; color: rgb(62, 98, 166); "&gt;ici&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-left: 0px; margin-bottom: 0.3em; margin-top: 0.3em; vertical-align: middle; "&gt;3) Installer Web developper Express 2008 SP1 avec l'option SQL EXPRESS 2008 &lt;a href="http://www.microsoft.com/eXPress/download/#webInstall" class="externalLink" style="text-decoration: underline; color: rgb(62, 98, 166); "&gt;ici&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-left: 0px; margin-bottom: 0.3em; margin-top: 0.3em; vertical-align: middle; "&gt;4) Installer les Silverlight tools &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=c22d6a7b-546f-4407-8ef6-d60c8ee221ed" class="externalLink" style="text-decoration: underline; color: rgb(62, 98, 166); "&gt;ici&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-left: 0px; margin-bottom: 0.3em; margin-top: 0.3em; vertical-align: middle; "&gt;5) Installer AgDatagrid &lt;a href="http://www.devexpress.com/Products/NET/Controls/Silverlight/Grid/" class="externalLink" style="text-decoration: underline; color: rgb(62, 98, 166); "&gt;ici&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-left: 0px; margin-bottom: 0.3em; margin-top: 0.3em; vertical-align: middle; "&gt;6) Download poshboard 0.3.5 or above &lt;a href="http://www.codeplex.com/poshboard" class="externalLink" style="text-decoration: underline; color: rgb(62, 98, 166); "&gt;here&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-left: 0px; margin-bottom: 0.3em; margin-top: 0.3em; vertical-align: middle; "&gt;7) Installer visifire 2.06 or above, copier "SLVisifire.Charts.dll" et "visifire2.js" dans le repertoire dropthings/xapfiles/ de Poshboard &lt;a href="http://www.visifire.com/" class="externalLink" style="text-decoration: underline; color: rgb(62, 98, 166); "&gt;here&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-left: 0px; margin-bottom: 0.3em; margin-top: 0.3em; vertical-align: middle; "&gt;&lt;b&gt;8) Ouvrir le projet dans Web Developper Express (poshboard/dropthings.sln), faire "Build" et tester !&lt;/b&gt;&lt;/li&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-4690521578832062107?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/4690521578832062107/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=4690521578832062107' title='8 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/4690521578832062107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/4690521578832062107'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2009/01/guide-installation-rapide-de-poshboard.html' title='Guide installation rapide de PoshBoard'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-4666789150456904123</id><published>2008-12-30T15:30:00.004+01:00</published><updated>2008-12-30T15:41:09.306+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Poshboard'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Nouvelle version de PoshBoard dispo (v0.3.5) : compatible Silverlight 2.0 Finale</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Première bonne résolution de l'année&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Sortir une nouvelle version de PoshBoard!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;PoshBoard v0.3.5 est maintenant disponible sur codeplex &lt;a href="http://www.codeplex.com/Poshboard"&gt;juste là&lt;/a&gt;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;La version 0.4 arrive, j'attends des mises à jour de version pour dropthings ainsi que d'autre nouveaux composants ...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;une présentation de PoshBoard 0.4 aura lieu au prochain Techdays, des nouvelles très bientôt !&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Quoi de Neuf ?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;-PoshBoard est &lt;span class="Apple-style-span" style="font-weight: bold; "&gt;maintenant compatible Silverlight 2.0 Finale et editable entièrement depuis Web Developper Express SP1 !&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;-Mise-à-jour vers les dernières version de AgDatagrid (Decembre 2008) et Visifire (2.0.5 Beta)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;- Fix de bugs dans la génération des datagrids&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;- Nouvelles fonction d'édition pour les charts Visifire : vous pouvez maintenant selectionner le type de graph et les paramètres (titres...) dans la fenêtre d'édition.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;important : Pour construire les graphiques, vous devez maintenant passer une ou plusieurs hashtable avec vos données à la fonction integrée "out-visifire"&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;out-visifire($myHashTable)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;ou&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;out-visifire($myHashTable1,$MyHashTable2)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;-Le guide utilisateur a été mis à jour, prenez le temps de le lire pour une installation rapide et sans soucis !&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Une autre bonne nouvelle&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Jeffrey Snover (Createur de PowerShell) a posté 2 très bons articles sur PoshBoard et la gestion des Hashtables sur le blog de la PowerShell Team : vous pouvez les lire &lt;a href="http://blogs.msdn.com/powershell/archive/2008/11/23/poshboard-and-convertto-hashtable.aspx"&gt;ici&lt;/a&gt; et &lt;a href="http://blogs.msdn.com/powershell/archive/2008/11/23/convertto-hashtable-ps1-part-2.aspx"&gt;ici&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Merci Jeffrey pour ton support et encouragements sur le projet !&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Très bonne année à tous !&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;N'hésitez pas à me faire part de vos feebacks&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-4666789150456904123?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/4666789150456904123/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=4666789150456904123' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/4666789150456904123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/4666789150456904123'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2008/12/avant-tout-nouvelle-version-de.html' title='Nouvelle version de PoshBoard dispo (v0.3.5) : compatible Silverlight 2.0 Finale'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-3019358175625717869</id><published>2008-11-19T16:36:00.005+01:00</published><updated>2008-11-19T17:28:54.229+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Poshboard'/><title type='text'>Des nouvelles de poshboard 0.4</title><content type='html'>&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Quelques nouvelles de PoshBoard :&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Le développement continue bien sûr ! :) malgré un planning pro un peu chargé ces temps-ci.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Avec l'arrivée de Silverlight 2.0 en finale et l'arrivée prochaine de Dropthings 1.8.0, une nouvelle mouture de PoshBoard va voir le jour :&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Au programme, la mise à niveau sur Dropthings et Silverlight 2 bien sûr, mais aussi de nouvelles fonctionnalités, donc voici les plus importantes :&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Nous allons introduire la création dynamique de contrôles basée sur ironPython, qui va permettre la création à la volée de gadgets (par code python ou avec un petit designer)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Je compte aussi introduire la possibilité de gérer l'import/export de widgets pour permettre l'échange de ceux-ci entre nous, gens de bonne compagnie.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Enfin, je compte inclure les &lt;a href="http://www.codeplex.com/SilverlightToolkit"&gt;silverlight control toolkits&lt;/a&gt; dans la barque&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Vos suggestions sont plus que jamais les bienvenues, n'hésitez pas à m'en faire part !&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;des nouvelles concrètes très bientôt donc.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-3019358175625717869?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/3019358175625717869/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=3019358175625717869' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/3019358175625717869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/3019358175625717869'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2008/11/des-nouvelles-de-poshboard-04.html' title='Des nouvelles de poshboard 0.4'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-2416990029771049235</id><published>2008-09-10T11:21:00.005+02:00</published><updated>2008-09-10T11:29:24.830+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Podcast'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShellPlus'/><title type='text'>PowerShellPlus professional GRATUIT pour les auditeurs de Powerscripting Podcast !</title><content type='html'>&lt;div style="text-align: justify;"&gt;Une info plutôt sympa dans le numéro 40 de &lt;a href="http://powerscripting.wordpress.com/2008/09/07/episode-40-poshboard-part-duex/"&gt;PowerScripting Podcast&lt;/a&gt; : Si vous téléchargez la Beta de PowerShell plus en suivant le lien fournis sur leur page, &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;vous aurez droit à une licence GRATUITE de PowerShellPlus à sa sortie finale !&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;un seul conseil : Ecoutez les Powerscripting Podcast (toujours très interessant qui plus est pour ceux qui pratique l'anglais), et suivez le lien ci-dessus pour obternir votre licence !&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-2416990029771049235?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/2416990029771049235/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=2416990029771049235' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/2416990029771049235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/2416990029771049235'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2008/09/powershellplus-professional-gratuit.html' title='PowerShellPlus professional GRATUIT pour les auditeurs de Powerscripting Podcast !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-2019154624000329190</id><published>2008-08-27T00:52:00.003+02:00</published><updated>2008-08-27T15:27:10.501+02:00</updated><title type='text'>Guide d'installation pour PoshBoard</title><content type='html'>Le guide d'installation de PoshBoard est &lt;a href="http://www.codeplex.com/Poshboard/Release/ProjectReleases.aspx?ReleaseId=16648"&gt;disponible ici&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update : le guide est maintenant disponible en Français !&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;Ce guide explique pas à pas comment utiliser la source avec Visual Studio ou Web Developper Express, comment publier le site web et utiliser les widgets.&lt;br /&gt;&lt;br /&gt;bonne lecture !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-2019154624000329190?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/2019154624000329190/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=2019154624000329190' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/2019154624000329190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/2019154624000329190'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2008/08/guide-dinstallation-pour-poshboard.html' title='Guide d&apos;installation pour PoshBoard'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-3049135158625807871</id><published>2008-08-26T01:08:00.010+02:00</published><updated>2008-08-26T11:36:47.754+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dashboard'/><category scheme='http://www.blogger.com/atom/ns#' term='Poshboard'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>PoshBoard 0.3 est de sortie !</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;update : les sources sont maintenant disponibles sur codeplex&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Tout avance bien, et je suis heureux de vous présenter la version 0.3 de Poshboard fraichement sortie des eaux.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.codeplex.com/poshboard"&gt;&lt;span style="font-size:180%;"&gt;Téléchargez la ici&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img209.imageshack.us/img209/6205/poshboard3xz6.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://img209.imageshack.us/img209/6205/poshboard3xz6.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;La nouvelle version de dropthings permet de simplifier la procédure d'install : vous trouverez un "quickstart" dans la page Releases de Codeplex.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Je prépare un tutorial complet pour installer/configurer le tout ainsi que sur l'utilisation des widgets mais il est tard pour ce soir, nous verrons cela demain ! :)  J'ai mis l'essentiel sur la page release de codeplex, n'hésitez pas à poser vos questions dans le forum de discussion sur codeplex&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Plusieurs grosses nouveautés sont en préparation qui je suis sûr vous intéresserons particulièrement ! PoshBoard va assurement prendre de l'ampleur dans les prochaines semaines.&lt;br /&gt;&lt;br /&gt;La version actuelle est encore en chantier, des petits bugs liés à siverlight, dropthings ou mon code parfois experimental viendront pimenter votre expérience, mais ceci va être rapidement corrigé.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Amusez vous bien et faites moi part de vos impressions et suggestions !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-3049135158625807871?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/3049135158625807871/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=3049135158625807871' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/3049135158625807871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/3049135158625807871'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2008/08/poshboard-03-est-de-sortie.html' title='PoshBoard 0.3 est de sortie !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-6418122753662336035</id><published>2008-07-30T17:17:00.018+02:00</published><updated>2008-07-30T23:15:03.247+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='Poshboard'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>PoshBoard, seconde vidéo : PowerShell génère des Datagrids Silverlight</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a href="http://devinfra-us.blogspot.com/2008/07/poshboard-2nd-presentation-adding.html"&gt;&lt;span style="font-weight: bold;"&gt;English version here&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Voici une nouvelle vidéo de Poshboard, mon projet open source de portail IT. Dans cette vidéo, vous découvrirez les dernières nouveautés arrivant avec la version 0.3 (&lt;a href="http://www.codeplex.com/Poshboard"&gt;disponible ici sur codeplex prochainement&lt;/a&gt;) :&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Lancez la lecture, cliquez sur HD, puis passez en plein écran (ou &lt;a href="http://www.vimeo.com/1436579"&gt;téléchargez là ici&lt;/a&gt;), spécialement car ma capture vidéo est légèrement partie en vrille côté rescaling :-)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;center&gt;&lt;object width="500" height="281"&gt; &lt;param name="allowfullscreen" value="true"&gt; &lt;param name="allowscriptaccess" value="always"&gt; &lt;param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1436579&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1"&gt; &lt;embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1436579&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="281"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://www.vimeo.com/1436579?pg=embed&amp;amp;sec=1436579"&gt;Poshboard Seconde video : Datagrid (Silverlight 2, AgDataGrid) et nouvelle GUI&lt;/a&gt; from &lt;a href="http://www.vimeo.com/user301430?pg=embed&amp;amp;sec=1436579"&gt;pilosite&lt;/a&gt; on &lt;a href="http://vimeo.com/?pg=embed&amp;amp;sec=1436579"&gt;Vimeo&lt;/a&gt;.&lt;/center&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify; font-weight: bold;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;Au programme ?&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;De nouveaux Widgets :&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;- Gestion des datagrid Silverlight 2 : générez les à partir d'un simple objet PowerShell&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- Utilisation &lt;a href="http://www.devexpress.com/Products/NET/Controls/Silverlight/Grid/"&gt;du contrôle AgDatagrid de developer Express,&lt;/a&gt; une excellente datagrid gratuite et open source en Silverlight bourrée de bonnes idées.&lt;br /&gt;&lt;/div&gt;- La gestion de sortie standard PowerShell&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Une nouvelle interface :&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Cette version est basée sur la version 1.6.0 de Dropthings, voyez la en action et découvrez les nouveautés (design amélioré, gestion dynamique de la taille et position des colonnes...)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Un tutorial d'install arrive, expliquant :&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;- Comment installer le portail sur un serveur (pré-requis, configuration IIS, sécurité...)&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- Comment jouer avec au moyen de Visual Studio 2008 et Web developper express 2008 SP1/ SQL 2008 CTP&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Posez vos questions dans les commentaires, et n'hésitez pas à utiliser la gestion des issues/discussions sur le site de codeplex pour me permettre de faire évoluer au mieux le projet !&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Bonne vidéo ;)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-6418122753662336035?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/6418122753662336035/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=6418122753662336035' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/6418122753662336035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/6418122753662336035'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2008/07/poshboard-seconde-vido-des-datagrids-au.html' title='PoshBoard, seconde vidéo : PowerShell génère des Datagrids Silverlight'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-8510960734437846419</id><published>2008-07-25T13:38:00.016+02:00</published><updated>2008-07-25T14:16:12.435+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AgDatagrid'/><category scheme='http://www.blogger.com/atom/ns#' term='Dynamic Object'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Datagrid'/><title type='text'>AgDatagrid et Silverlight Datagrid : comment créer dynamiquement une Datasource ?</title><content type='html'>&lt;p align="justify"&gt;&lt;strong&gt;English version available &lt;a href="http://devinfra-us.blogspot.com/2008/07/agdatagrid-and-silverlight-datagrid-how.html"&gt;HERE&lt;/a&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;Le code source du projet est  &lt;a href="http://www.fileden.com/files/2008/5/19/1920192/AgDatagridDynamicData.zip"&gt;disponible ici&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;strong&gt;Un exemple live juste en dessous !&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;strong&gt;&lt;br /&gt;&lt;iframe src="http://silverlight.services.live.com/invoke/14606/AgDatagridDynamicData/iframe.html" style="width: 400px; height: 400px;" scrolling="no" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Je travaille actuellement sur le composant AgDataGrid, un excellent contrôle Silverlight gratuit et open source de DevExpress (&lt;a href="http://www.devexpress.com/Products/NET/Controls/Silverlight/Grid/"&gt;Démonstration complète ici&lt;/a&gt;). Bien entendu, mon but est d'implémenter celui-ci comme widget dans &lt;a href="http://www.codeplex.com/Poshboard"&gt;PowerShell Dashboard&lt;/a&gt; ;-)&lt;/p&gt;  &lt;p align="justify"&gt;J'ai rencontré un petit problème, qui est d'ailleurs valable pour le contrôle DataGrid standard de Silverlight 2, et plus généralement pour la génération dynamique d'objets typés en .NET :&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;Comment créer dynamiquement la Datagrid ?&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;AgDatagrid et la datagrid Silverlight 2 utilisent un objet de type IList pour construire la Datasource. Quand on utilise du code managé (C#/VB.NET...), vous devez créer une classe représentant vos données pour pouvoir construire cette IList :&lt;/p&gt;  &lt;div   style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;   &lt;div   style="border-style: none; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;     &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt; Person {   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; Name {   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;                      get;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   4:&lt;/span&gt;                      set;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;                 }   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;     &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; City {   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;                      get;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;                      set;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: rgb(0, 0, 0); line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;                 }   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt;     &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; State {   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt;                      get;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: rgb(0, 0, 0); line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt;                      set;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  15:&lt;/span&gt;                 }   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  16:&lt;/span&gt;            }   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  17:&lt;/span&gt;     &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  18:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Person() {   &lt;/span&gt;&lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  19:&lt;/span&gt; me = &lt;span style="color: rgb(0, 96, 128);"&gt;"Michael Jordan"&lt;/span&gt;, City=&lt;span style="color: rgb(0, 96, 128);"&gt;"Chicago"&lt;/span&gt;, State=&lt;span style="color: rgb(0, 96, 128);"&gt;"IL"&lt;/span&gt; },   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: rgb(0, 0, 0); line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  20:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Person() {   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  21:&lt;/span&gt; me = &lt;span style="color: rgb(0, 96, 128);"&gt;"Kobe Bryant"&lt;/span&gt;, City=&lt;span style="color: rgb(0, 96, 128);"&gt;"Los Angeles"&lt;/span&gt;, State=&lt;span style="color: rgb(0, 96, 128);"&gt;"CA"&lt;/span&gt; },   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: rgb(0, 0, 0); line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  22:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Person() {   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  23:&lt;/span&gt; me = &lt;span style="color: rgb(0, 96, 128);"&gt;"Shaquille O'Neil"&lt;/span&gt;, City=&lt;span style="color: rgb(0, 96, 128);"&gt;"Miami"&lt;/span&gt;, State=&lt;span style="color: rgb(0, 96, 128);"&gt;"FL"&lt;/span&gt; },   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: rgb(0, 0, 0); line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  24:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Person() {   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  25:&lt;/span&gt; me = &lt;span style="color: rgb(0, 96, 128);"&gt;"Patrick Ewing"&lt;/span&gt;, City=&lt;span style="color: rgb(0, 96, 128);"&gt;"New York"&lt;/span&gt;, State=&lt;span style="color: rgb(0, 96, 128);"&gt;"NY"&lt;/span&gt; }    &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: rgb(0, 0, 0); line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  26:&lt;/span&gt;  &lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;C'est impeccable quand vous connaissez votre source de données, mais comment faire quand vous avez du contenu dynamique (comme par exemple le retour d'un script PowerShell) ?&lt;br /&gt;&lt;/div&gt;&lt;p align="justify"&gt;Je veux en effet utiliser la grid pour afficher mes données venant de PowerShell, je ne connais donc pas par avance le type des objets ni le nombre de colonnes...&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;Voici le point clé : je ne peux pas utiliser de classe statique pour définir mes données dans le contrôle Silverlight.&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 align="center"&gt;Game Over ? &lt;/h2&gt;&lt;br /&gt;&lt;h1 align="center"&gt;Pas encore!&lt;/h1&gt;&lt;p align="left"&gt; &lt;/p&gt;Nous avons deux stratégies à notre disposition pour arriver à notre résultat :&lt;br /&gt;&lt;br /&gt;-   Utiliser la programmation par langage dynamique avec Silverlight (Ironpython, IronRuby, JScript managé...)  pour construire dynamiquement le contrôle ?&lt;br /&gt;&lt;br /&gt;-   Créer malgré tout dynamiquement la classe en code managé  ?&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Utiliser les langages dynamiques serait une solution idéale (et pour moi la meilleure à terme). Malheureusement, nous sommes encore au stade de la Beta côté siverlight et DSL, et il est aujourd'hui encore difficile de créer dynamiquement des contrôles Silverlight 2 Beta 2 dans ce contexte (pour le moment) car tout n'est pas encore figé dans le marbre :), je ne vais donc pas rentrer dans cette explication pour le moment (J'attends avec impatience quelques exemples de la part de l'équipe Silverlight sur ce sujet )&lt;br /&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;&lt;strong&gt;Alors, pouvons nous créer dynamiquement la classe dans notre code managé ?&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="center"&gt;Ma réponse est : OUI !&lt;br /&gt;&lt;/p&gt;&lt;h4&gt;Comment générer des objets typés dynamiquement en .NET&lt;br /&gt;&lt;/h4&gt;&lt;p align="justify"&gt;Après quelques recherches (INTENSIVES est le mot juste), j'ai trouvé un post excellent de Vladimir Bodurov sous le thème : "How to generated dynamically typed objects in .NET" :&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a title="http://www.simple-talk.com/dotnet/.net-framework/dynamically-generating--typed-objects-in-.net/" href="http://www.simple-talk.com/dotnet/.net-framework/dynamically-generating--typed-objects-in-.net/"&gt;http://www.simple-talk.com/dotnet/.net-framework/dynamically-generating--typed-objects-in-.net/&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;Bingo ! Vladimir nous donne le code magique pour construire nos objets dynamiquement que nous pouvons simplement implémenter comme Datasource, sans coder de classe statique !&lt;/p&gt;&lt;div style="text-align: justify;"&gt;Ok, génial. Voyons maintenant comment j'ai utilisé ceci avec AgDatagrid (Vous pourrez très facilement convertir cet exemple avec le contrôle standard Datagrid de Silverlight 2, mais il n'est pas aussi classe et riche que le super contrôle de Devexpress :-) )&lt;br /&gt;&lt;/div&gt;&lt;p align="justify"&gt;Allons-y messieurs dames, jetons un oeil dans le code !&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;Mon exemple est l'implémentation la plus basique possible afin de bien vous faire comprendre le principe&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;mon fichier Page.xaml est plutôt simple :&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/pilosite/SImu2_ZT-5I/AAAAAAAAAI8/s2htaRkhQEM/s1600-h/agdynamic2%5B3%5D.jpg"&gt;&lt;img style="border: 0px none ;" alt="agdynamic2" src="http://lh6.ggpht.com/pilosite/SImu3ZPPbwI/AAAAAAAAAJA/sdcf-mWSCMY/agdynamic2_thumb%5B1%5D.jpg?imgmax=800" width="393" border="0" height="339" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;div style="text-align: justify;"&gt;J'ai posé 2 Textboxes (Une pour les noms de colonnes, une pour les données), un bouton pour construire la datagrid, et la datagrid elle-même. Nous pourrions récupérer les données de l'extérieur, mais ceci est un autre sujet, je souhaite rester volontairement simpliste.&lt;br /&gt;&lt;/div&gt;&lt;p align="justify"&gt;Voici le code XAML de la page:&lt;br /&gt;&lt;/p&gt;&lt;div   style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;br /&gt;&lt;div   style="border-style: none; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;br /&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;UserControl&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;x:Class&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="AgDatagridDynamicData.Page"&lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt;     &lt;span style="color: rgb(255, 0, 0);"&gt;xmlns&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;    &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;     &lt;span style="color: rgb(255, 0, 0);"&gt;xmlns:x&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;    &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt;     &lt;span style="color: rgb(255, 0, 0);"&gt;xmlns:ag&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="clr-namespace:DevExpress.Windows.Controls;assembly=DevExpress.AgDataGrid.v8.2"&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;     &lt;span style="color: rgb(255, 0, 0);"&gt;xmlns:local&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="clr-namespace:AgDatagridDynamicData"&lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;     &lt;span style="color: rgb(255, 0, 0);"&gt;Width&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="800"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Height&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="600"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Grid&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;x:Name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="LayoutRoot"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Background&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="black"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Grid&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;RowDefinition&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Height&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Auto"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;RowDefinition&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Height&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Auto"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;RowDefinition&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Height&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Auto"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;RowDefinition&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Height&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Auto"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  15:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  16:&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Width&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Auto"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  17:&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Width&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Auto"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  18:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  19:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;TextBlock&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Width&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Auto"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;Row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="0"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;Column&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="0"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Text&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Columns (Parse with ';'):"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;                   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  20:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;TextBox&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;x:Name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="ColumnsData"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Background&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="blackSmoke"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Width&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="500"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;Row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="0"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;Column&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="1"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Text&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Column1;Column2;Column3"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;TextBox&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  21:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;TextBlock&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Width&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Auto"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;Row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="1"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;Column&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="0"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Text&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Data (Parse Row with '*', cells with ';' :"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  22:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;TextBox&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;x:Name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="CellsData"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Background&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="blackSmoke"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Width&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="500"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;Row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="1"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;Column&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="1"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Text&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="DataA1;DataA2;DataA3*DataB1;DataB2;DataB3"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;TextBox&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;     &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  23:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Button&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Click&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Button_Click"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;Row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="2"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;ColumnSpan&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="2"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Content&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Generate AgDataGrid"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Button&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  24:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;ag:AgDataGrid&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Width&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="800"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Height&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="400"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;Row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="3"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;ColumnSpan&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="2"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;AutoGenerateColumns&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="True"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;x:Name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="mygrid"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  25:&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;ag:AgDataGrid&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  26:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Grid&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;           &lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  27:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Grid&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  28:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;UserControl&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Toute la subtilité est dans la page.xaml.cs, regardons la de plus près.&lt;br /&gt;&lt;br /&gt;J'utilise seulement les données des textboxes du contrôle Silverlight (Vous verrez dans la version Widget pour PoshBoard comment vous y prendre pour aller chercher les données à l'extérieur)&lt;br /&gt;&lt;br /&gt;J'utilise simplement du parsage de string pour construire ma Datagrid :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Les colonnes sont splittées avec un ";"&lt;/li&gt;&lt;li&gt;Les données sont splittées avec "*" pour chaque ligne, et dans ces lignes les cellules sont splittées avec un ";" &lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Bien sûr, il serait plus sage de plutôt utiliser XML pour définir ces données, mais restons dans notre optique de simplicité.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p align="justify"&gt;Colonne :&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;Column1;Column2;Column3&lt;/p&gt;Données :&lt;br /&gt;&lt;p align="left"&gt;DataA1;DataA2;DataA3*DataB1;DataB2;DataB3*DataC1;DataC2;DataC3&lt;/p&gt;&lt;div style="text-align: justify;"&gt;Première chose, Je met directement la classe DataSourceCreator de Vladimir dans le namespace de mon contrôle, sans toucher à rien (C'est ce que j'apelle du code magique)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/pilosite/SImu4PjeecI/AAAAAAAAAJE/2s5yr3curUA/s1600-h/agdynamic1%5B3%5D.jpg"&gt;&lt;img style="border: 0px none ;" alt="agdynamic1" src="http://lh3.ggpht.com/pilosite/SImu5BjdqLI/AAAAAAAAAJI/0u34IuhjMS0/agdynamic1_thumb%5B1%5D.jpg?imgmax=800" width="454" border="0" height="392" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Après avoir insérer le code pour appelé les différentes libs nécessaire à la classe de Vladimir(System.Reflection, etc...), définissons le code principal de ma page :&lt;br /&gt;&lt;/div&gt;&lt;p align="justify"&gt;Voyons notre classe principale (UserControl ) :&lt;br /&gt;&lt;/p&gt;&lt;div   style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;br /&gt;&lt;div   style="border-style: none; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;br /&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;partial&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt; Page : UserControl   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt;     {   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; Columns;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; Data;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; Page()   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;         {   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;             InitializeComponent();               &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;         }   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;     &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; Button_Click(&lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt;         {   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;     &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt;             mygrid.Columns.Clear();   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt;             &lt;span style="color: rgb(0, 128, 0);"&gt;// Adding Columns to the AgDatagrid&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  15:&lt;/span&gt;             &lt;span style="color: rgb(0, 128, 0);"&gt;// With Column type added in the Columns string &lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  16:&lt;/span&gt;             &lt;span style="color: rgb(0, 128, 0);"&gt;// we could use a Type checker and setting Column Type&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  17:&lt;/span&gt;             &lt;span style="color: rgb(0, 128, 0);"&gt;// from code behind : &lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  18:&lt;/span&gt;             &lt;span style="color: rgb(0, 128, 0);"&gt;// mygrid.Columns.Add(new AgDataGridTextColumn() { FieldName = SingleColumn});  &lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  19:&lt;/span&gt;             Columns = ColumnsData.Text;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  20:&lt;/span&gt;             Data = CellsData.Text;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  21:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; SingleColumn &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; Columns.Split(&lt;span style="color: rgb(0, 96, 128);"&gt;';'&lt;/span&gt;))   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  22:&lt;/span&gt;             {              &lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  23:&lt;/span&gt;                 mygrid.AddColumn(SingleColumn);&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  24:&lt;/span&gt;             }&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  25:&lt;/span&gt;  &lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  26:&lt;/span&gt;             &lt;span style="color: rgb(0, 128, 0);"&gt;// Here we set the DataSource with a direct call to the function of&lt;/span&gt;&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  27:&lt;/span&gt;             &lt;span style="color: rgb(0, 128, 0);"&gt;// Vladimir            &lt;/span&gt;&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  28:&lt;/span&gt;             mygrid.DataSource = GenerateData().ToDataSource();        &lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  29:&lt;/span&gt;         }&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;Que fait-on ici ?&lt;br /&gt;&lt;p style="text-align: justify;"&gt;Rien de spécial dans la fonction Public Page() : J'initialise le composant (c'est le code par défaut)&lt;/p&gt;Tout est dans la fonction "Button_Click" :&lt;br /&gt;&lt;br /&gt;&lt;div   style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;br /&gt;&lt;div   style="border-style: none; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;br /&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; Button_Click(&lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;  &lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt;     mygrid.Columns.Clear();&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;     &lt;span style="color: rgb(0, 128, 0);"&gt;// Adding Columns to the AgDatagrid&lt;/span&gt;&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;     &lt;span style="color: rgb(0, 128, 0);"&gt;// With Column type added in the Columns string &lt;/span&gt;&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;     &lt;span style="color: rgb(0, 128, 0);"&gt;// we could use a Type checker and setting Column Type&lt;/span&gt;&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;     &lt;span style="color: rgb(0, 128, 0);"&gt;// from code behind : &lt;/span&gt;&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;     &lt;span style="color: rgb(0, 128, 0);"&gt;// mygrid.Columns.Add(new AgDataGridTextColumn() { FieldName = SingleColumn});  &lt;/span&gt;&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;     Columns = ColumnsData.Text;&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt;     Data = CellsData.Text;&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; SingleColumn &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; Columns.Split(&lt;span style="color: rgb(0, 96, 128);"&gt;';'&lt;/span&gt;))&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt;     {                &lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt;         mygrid.AddColumn(SingleColumn);&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  15:&lt;/span&gt;     }&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  16:&lt;/span&gt;  &lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  17:&lt;/span&gt;     &lt;span style="color: rgb(0, 128, 0);"&gt;// Here we set the DataSource with a direct call to the function of&lt;/span&gt;&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  18:&lt;/span&gt;     &lt;span style="color: rgb(0, 128, 0);"&gt;// Vladimir            &lt;/span&gt;&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  19:&lt;/span&gt;     mygrid.DataSource = GenerateData().ToDataSource();        &lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  20:&lt;/span&gt; }&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Premièrement, je vide la datagrid (sans ça, ma fonction ferait de l'ajout, pas de la création from scratch à chaque click)&lt;br /&gt;&lt;/div&gt;&lt;p align="justify"&gt;Ensuite nous récupérons les données des 2 textbox, puis nous allons créer les colonnes :&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;div   style="border-style: none; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;br /&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; SingleColumn &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; Columns.Split(&lt;span style="color: rgb(0, 96, 128);"&gt;';'&lt;/span&gt;))&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;     mygrid.Columns.Add(&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; AgDataGridTextColumn() { FieldName = SingleColumn });&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt; }&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Je génère ici que des colonnes de type "texte". Nous pourrions très facilement définir le type dans la chaine de caractère pour implémenter tout ce que propose AgDatagrid, mais encore une fois je suis resté basique (La faute peut-être à mon pot Chez Octo d'hier) :&lt;br /&gt;&lt;/div&gt;&lt;p&gt;Ensuite, je défini la Datasource:&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;div   style="border-style: none; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;br /&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; mygrid.DataSource = GenerateData().ToDataSource(); &lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Nous faisons appelle à la fonction GenerateDate dans la classe (J'ai juste récupéré l'exemple de Vladimir Que j'ai réadapté) :&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div   style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;br /&gt;&lt;div   style="border-style: none; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;br /&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; IEnumerable&amp;lt;IDictionary&amp;gt; GenerateData()&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;[] dataSplit = Data.Split(&lt;span style="color: rgb(0, 96, 128);"&gt;'*'&lt;/span&gt;);&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; RowNumber = dataSplit.Count();&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;[] ColumnSplit = Columns.Split(&lt;span style="color: rgb(0, 96, 128);"&gt;';'&lt;/span&gt;);&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; ColumnNumber = ColumnSplit.Count();&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt; (var i = 0; i &amp;lt; RowNumber; i++)&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;     {&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;[] cellData = dataSplit[i].Split(&lt;span style="color: rgb(0, 96, 128);"&gt;';'&lt;/span&gt;);&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;         var dict = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;, &lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt;&amp;gt;();&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt; (var j = 0; j &amp;lt; ColumnNumber; j++)&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;         {&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt;             dict[ColumnSplit[j]] = cellData[j];&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt;         }&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  15:&lt;/span&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;yield&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; dict;                &lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  16:&lt;/span&gt;     }             &lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  17:&lt;/span&gt; }&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;tout ce passe dans ce code précis. comment cela fonctionne-t-il donc ? On déclare un dictionnaire et nous l'alimentons avec des séries Clés/valeurs :&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Le clé est le nom de la colonne visée , value est le contenu de la cellule à ajouter. Comme vous le voyez on défini avec cette méthode dynamiquement le nom de colonne visée à partir de la référence de notre string Column :&lt;br /&gt;&lt;br /&gt;dict[ColulmnSplit[J]] = ...&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;c'est ce procédé qui nous évite d'avoir a définir la classe, c'e'st tout simplement excellent.&lt;br /&gt;&lt;br /&gt;&lt;h4 align="center"&gt;Et c'est tout !&lt;br /&gt;&lt;/h4&gt;&lt;div style="text-align: justify;"&gt;Comme vous pouvez le constater, il est très facile d'alimenter dynamiquemenet une Datasource avec ce procédé.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Pour aller plus loin, nous pourrions utiliser un format XML pour la récupération des données, choisir un type de données pour les colonnes en fonction du type fourni en entrée.... les possibilité sont infinies !&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Un grand merci à Azret et l'équipe support de DevExpress pour leur aide réactive, et merci à Vladimir Bodurov pour son superbe exemple de code que je vous invite à consulter pour comprendre tout le mécanisme !&lt;br /&gt;&lt;/div&gt;&lt;p style="text-align: center;"&gt;Des questions ? les commentaires sont à votre disposition !&lt;br /&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;strong&gt;AMUSEZ VOUS BIEN AVEC SILVERLIGHT ET AGDATAGRID !&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-8510960734437846419?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/8510960734437846419/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=8510960734437846419' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/8510960734437846419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/8510960734437846419'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2008/07/agdatagrid-et-silverlight-datagrid.html' title='AgDatagrid et Silverlight Datagrid : comment créer dynamiquement une Datasource ?'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/pilosite/SImu3ZPPbwI/AAAAAAAAAJA/sdcf-mWSCMY/s72-c/agdynamic2_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-5729256342840481224</id><published>2008-07-18T10:53:00.006+02:00</published><updated>2008-07-18T10:58:36.297+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Podcast'/><category scheme='http://www.blogger.com/atom/ns#' term='Poshboard'/><title type='text'>PoshBoard présenté dans le PowerShell Podcast 33</title><content type='html'>Dans le dernier numéro de &lt;a href="http://powerscripting.wordpress.com/2008/07/13/episode-33-cage-match-powerscripting-vs-quest/"&gt;PowerShell Podcast&lt;/a&gt; (excellent podcast sur PowerShell que je vous invite à découvrir si vous n'avez jamais pratiqué), Jonathan Walz et Hal Rottenberg parlent (entre autre!) de mon site et présente le projet PoshBoard.&lt;br /&gt;&lt;br /&gt;Merci à eux de l'intérêt qu'il porte à mon travail, ça me fait réellement plaisir ;), vous pouvez retrouver ce podcast sur leur site &lt;a href="http://powerscripting.wordpress.com/"&gt;PowerScripting&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-5729256342840481224?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/5729256342840481224/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=5729256342840481224' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/5729256342840481224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/5729256342840481224'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2008/07/poshboard-prsent-dans-le-powershell.html' title='PoshBoard présenté dans le PowerShell Podcast 33'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-4733539284254617536</id><published>2008-07-10T19:59:00.000+02:00</published><updated>2008-07-10T20:00:00.611+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dashboard'/><category scheme='http://www.blogger.com/atom/ns#' term='codeplex'/><category scheme='http://www.blogger.com/atom/ns#' term='Poshboard'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Poshboard dispo en preview !</title><content type='html'>Suite à plusieurs demande pour tester le portail, j'ai mis une pré-version disponible dès à présent sur codeplex en cliquant &lt;a href="http://www.codeplex.com/poshboard"&gt;ICI&lt;/a&gt; ou rendez vous sur http://www.codeplex.com/poshboard&lt;br /&gt;&lt;br /&gt;Amusez-vous bien et n'hésitez pas à me poser vos questions !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-4733539284254617536?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/4733539284254617536/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=4733539284254617536' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/4733539284254617536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/4733539284254617536'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2008/07/poshboard-dispo-en-preview.html' title='Poshboard dispo en preview !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-8532384994505947525</id><published>2008-07-05T09:23:00.027+02:00</published><updated>2008-07-10T19:56:06.992+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dashboard'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>PowerShell Dashboard : ASP.NET, Silverlight et PowerShell dans un shaker !</title><content type='html'>&lt;div align="justify"&gt;&lt;a href="http://devinfra-us.blogspot.com/2008/07/powershell-dashboard-aspnet-silverlight.html"&gt;&lt;span style="font-size:130%;"&gt;English Version available here&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Mis-à-Jour : le code source d'une préversion est maintenant disponible sur CodePlex, cliquez &lt;a href="http://www.codeplex.com/poshboard"&gt;ICI &lt;/a&gt;ou rendez vous sur http://www.codeplex.com/poshboard&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Je vous propose une petite vidéo de présentation de mon projet "PowerShell Dashboard" (PoshBoard pour les intimes) actuellement en développement et prochainement disponible via &lt;a href="http://forge.octo.com/"&gt;la forge Octo&lt;/a&gt;. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Il s'agit d'un projet open source dont l'objectif est de mettre à disposition un portail très modulaire basé sur PowerShell. L'idée est de reprendre le concept des interfaces tels que &lt;a href="http://www.google.fr/ig?source=fhig"&gt;igoogle&lt;/a&gt;, &lt;a href="http://www.pageflakes.com/"&gt;PageFlakes&lt;/a&gt; ou &lt;a href="http://www.netvibes.com/"&gt;Netvibes&lt;/a&gt;, mais orienté admin système.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;Pourquoi ? pour pouvoir créer très facilement des dashboards infrastructure sans avoir à coder en ASP.NET / Ajax ou autre : la seule compétence requise est le scripting.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;Ce projet s'appuie sur &lt;a href="http://www.codeplex.com/dropthings"&gt;Dropthings&lt;/a&gt;, le portail ASP.NET / AJAX d'Omar AL Zabir, réorienté en intranet. Pour cette première démonstration et un premier widget, je m'appuie sur le rendu de graphique (Colonnes, camembert...) grâce à l'excellente librairie de graphique Silverlight &lt;a href="http://www.visifire.com/"&gt;VISIFIRE&lt;/a&gt;, elle aussi gratuite et open source.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;Cette première démo présente le concept général du portail que je vous mettrai prochainement à disposition en téléchargement libre. Viendra ensuite d'autres composants et innovations pour vous apporter toujours plus de fun dans l'utilisation de PowerShell ! :)&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Trève de blabla, voici la vidéo de démonstration :&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="505" height="284"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1280433&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1"&gt;&lt;br /&gt;&lt;embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1280433&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="505" height="284"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://www.vimeo.com/1280433?pg=embed&amp;amp;sec=1280433"&gt;PowerShell Dashboard&lt;/a&gt; from &lt;a href="http://www.vimeo.com/user301430?pg=embed&amp;amp;sec=1280433"&gt;pilosite&lt;/a&gt; on &lt;a href="http://vimeo.com/?pg=embed&amp;amp;sec=1280433"&gt;Vimeo&lt;/a&gt;. &lt;/center&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Cette vidéo pour votre confort étant au format HD 1280x720,Je vous invite &lt;strong&gt;très fortement&lt;/strong&gt; a cliquer sur le l'icône HD (après avoir lancé la lecture) afin de voir cette présentation en haute résolution (Mettez ensuite la vidéo en plein écran pour avoir la résolution native optimale). Vous pouvez aussi simplement &lt;a href="http://www.vimeo.com/1280433?pg=embed&amp;amp;sec=1280433&amp;amp;hd=1"&gt;cliquer ici&lt;/a&gt; et passer en plein écran. Vous pourrez avec ce lient télécharger la vidéo au format wmv.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Des questions ? n'hésitez pas à poster un commentaire ou me joindre par mail &lt;a href="mailto:devinfra@gmail.com"&gt;en cliquant ici&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;Vous souhaitez intégrer en avant première ce type de technologie dans votre entreprise, découvrir les autres composants en cours d'élaboration, vous former ou former vos équipes sur PowerShell ? alors contactez moi : &lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;je m'occupe au sein de la société &lt;a href="http://www.octo.com/"&gt;OCTO TECHNOLOGY&lt;/a&gt; d'une offre infrastructure dédiée à ces thématiques, et c'est avec grand plaisir que nous pouvons étudier avec vous vos besoins concrets et vous apporter le conseil et l'aide à l'intégration sur tout projets de développement orienté infrastructure tels que ce portail, et bien plus. &lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Demandez plus d'informations en passant par &lt;a href="http://www.octo.com/contacts/contacts.html"&gt;la rubrique contact de notre site internet&lt;/a&gt; !&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-8532384994505947525?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/8532384994505947525/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=8532384994505947525' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/8532384994505947525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/8532384994505947525'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2008/07/powershell-dashboard-aspnet-silverlight.html' title='PowerShell Dashboard : ASP.NET, Silverlight et PowerShell dans un shaker !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-9133232334698516332</id><published>2008-06-25T10:34:00.005+02:00</published><updated>2008-06-25T10:48:34.371+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenXML'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='Word'/><title type='text'>Génération de document Office avec PowerShell</title><content type='html'>&lt;div style="text-align: justify;"&gt;Nous avons présenté lors des derniers Techdays un POC de génération automatique de documents basée sur PowerShell et OpenXML.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;C'est un concept vraiment interessant côté production car cela permet d'obtenir des documents dynamiques qui peuvent être mis à jour à la demande : Analyse de vos serveurs de messagerie, audit Active Directory, Tableau de bord sur vos serveurs de fichiers...&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;L'intérêt de cette approche est de mettre cette génération à la portée du scripting (PowerShell en l'occurence), alors qu'il fallait jusqu'à présent soit beaucoups d'astuces (et affronter pas mal de limitation dans la richesse des docs générées), soit passer par du développement VSTO.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://blogs.msdn.com/ericwhite/default.aspx"&gt;Eric White&lt;/a&gt; à publié récemment un projet dans ce sens sur Codeplex qui concrètise avec brio cette démarche : il met à notre disposition un snapin particulièrement bien vu qui simplifie énormément les choses et permet de générer n'importe quel type de doc office 2007, et ceux sans avoir office installé grâce à la magie de l'openXML !&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Je vous invite à &lt;a href="http://blogs.msdn.com/ericwhite/archive/2008/06/11/processing-open-xml-documents-server-side-using-powershell.aspx"&gt;regarder cette vidéo&lt;/a&gt; et à &lt;a href="http://www.codeplex.com/PowerTools"&gt;télécharger au plus vite le projet sur codeplex&lt;/a&gt;, vous ne serez pas déçu du voyage ;)&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-9133232334698516332?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/9133232334698516332/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=9133232334698516332' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/9133232334698516332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/9133232334698516332'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2008/06/gnration-de-document-office-avec.html' title='Génération de document Office avec PowerShell'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-445123217061739318</id><published>2008-05-23T15:19:00.015+02:00</published><updated>2008-05-23T16:13:01.168+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>PowerShell et ASP.NET part 3</title><content type='html'>&lt;p align="justify"&gt;Nous voici rendu à la troisième et dernière partie de ce petit tutorial sur PowerShell et ASP.NET&lt;/p&gt;&lt;p align="justify"&gt;Nous allons voir ici comment piloter un script depuis un formulaire web, et comment déployer ce site sur un serveur IIS convenablement.&lt;/p&gt;&lt;h3&gt;Piloter un script&lt;/h3&gt;&lt;p align="justify"&gt;Nous avons vu précédemment comment exécuter du code PowerShell à partir d'une Textbox. Voyons maintenant comment nous pouvons piloter un script en modifiant ces paramètres à la volée.&lt;/p&gt;&lt;p align="justify"&gt;Ceci est pratique quand vous voulez par exemple faire un portail de provisioning ou d'audit. Plutôt que de proposer à l'utilisateur de taper du code PowerShell, vous pouvez plutôt proposer un formulaire qui va se charger d'exécuter un script avec des paramètres.&lt;/p&gt;&lt;p align="justify"&gt;Pour illuster ceci, voici un exemple de recherche d'information avec WMI qui peut prendre en argument un nom de machine. j'ai légèrement modifié notre exemple de départ en rajoutant une petite Textbox qui va prendre ce nom de machine :&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/pilosite/SDbEVHHd_WI/AAAAAAAAAG0/ybvIjdbkZfs/powerASP4%5B6%5D.jpg"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="357" alt="powerASP4" src="http://lh4.ggpht.com/pilosite/SDbEWHHd_XI/AAAAAAAAAG8/eAYNibFF1Ys/powerASP4_thumb%5B4%5D.jpg" width="501" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p align="justify"&gt;Voyons maintenant ce qui change côté code. En fait, très peu de chose : Nous allons à présent lire un script incorporé au site web, modifier le contenu et l'exécuter. &lt;/p&gt;&lt;p align="justify"&gt;Voici le script ajouté au projet :&lt;/p&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; BORDER-BOTTOM-WIDTH: 1px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; BORDER-BOTTOM-: 4pxcolor:gray;" &gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"   &gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;$strComputer = &lt;span style="color:#006080;"&gt;"*ComputerName*"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;get-wmiobject -&lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#006080;"&gt;"Win32_LogicalDisk"&lt;/span&gt; -&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; &lt;span style="color:#006080;"&gt;"root\cimv2"&lt;/span&gt; -computername $strComputer &lt;span style="color:#0000ff;"&gt;where&lt;/span&gt;{$_.DriveType –eq 3}&lt;span style="color:#0000ff;"&gt;out&lt;/span&gt;-&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p align="justify"&gt;Un script très classique de requête WMI. Comme vous pouvez le voir, j'ai mis le nom de machine en argument. J'ai mis une référence arbitraire de nom "*ComputerName*", qui va me servir pour remplacer cette valeur de variable par le contenu de la TextBox du formulaire.&lt;/p&gt;&lt;p&gt;Voyons le changement opéré dans le code :&lt;/p&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; BORDER-BOTTOM-WIDTH: 1px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; BORDER-BOTTOM-: 4pxcolor:gray;" &gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"   &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;        &lt;span style="color:#008000;"&gt;// On the fly script modification before execution&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;        StreamReader objReader = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StreamReader(Server.MapPath(&lt;span style="color:#006080;"&gt;"~/scripts/WmiAsset.ps1"&lt;/span&gt;));&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;        &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; strContent = objReader.ReadToEnd();&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;        strContent = strContent.Replace(&lt;span style="color:#006080;"&gt;"*ComputerName*"&lt;/span&gt;, TxtComputerName.Text);&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;        &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.executePowerShellCode(strContent);&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p align="justify"&gt;Première chose, nous allons lire le fichier contenant le code de notre script. Je l'ai rangé dans un sous-répertoire nommé "scripts", et on utilise simplement à nouveau la librairie system.IO&lt;/p&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"   &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;StreamReader objReader = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StreamReader(Server.MapPath(&lt;span style="color:#006080;"&gt;"~/scripts/WmiAsset.ps1"&lt;/span&gt;));&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;br /&gt;Ensuite nous allons mettre l'intégralité du contenu dans une variable, et fermer l'objet StreamReader qui ne nous servira plus :&lt;/div&gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"   &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; strContent = objReader.ReadToEnd();&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p align="justify"&gt;Ensuite nous utilisons simplement la méthode replace sur cette string, en changeant le code avec le contenu de notre Textbox qui contient le nom de machine.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"   &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;strContent = strContent.Replace(&lt;span style="color:#006080;"&gt;"*ComputerName*"&lt;/span&gt;, TxtComputerName.Text);&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p align="justify"&gt;C'est pour ça qu'il est important que le contenu de la variable modifiée soit unique (ici *ComputerName*). Comme vous avez la maitrise du code PowerShell utilisé, ceci est normalement facile à obtenir.&lt;/p&gt;&lt;p align="justify"&gt;Voilà qui est fait, il ne nous reste plus qu'à exécuter le code comme dans l'exemple précédent.&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"   &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.executePowerShellCode(strContent);&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p align="justify"&gt;Et voilà, rien de bien compliqué si vous avez saisi les précédentes parties. L'intérêt ici est qu'il suffit, en cas de modification de la requête à effectuer, d'aller simplement modifier le fichier .PS1 du répertoire script sur le serveur web, sans avoir à lancer un éditeur C#/ASP.NET.&lt;/p&gt;&lt;p align="justify"&gt;Vous pouvez bien sûr mettre plusieurs paramètres dans le formulaire. Il reste des choses importantes à implémenter pour une gestion "pro" (prise en compte des erreurs de scripts PowerShell, gestion plus poussé des modes de sorties de script, un contrôle plus adapté que la Textbox pour le suivi des sorties de scripts, etc...) mais vous avez maintenant les bases pour vous lancer, et surtout je l'espère une meilleure compréhension du principe d'interaction envisageable entre le monde web et le scripting PowerShell.&lt;/p&gt;&lt;p&gt;Voyons a présent comment déployer ce portail sur un serveur IIS.&lt;/p&gt;&lt;h3&gt;Déploiement du site web&lt;/h3&gt;&lt;p align="justify"&gt;L'intérêt de notre configuration est de pouvoir utiliser un compte de service pour l'exécution des tâches (en l'occurence, l'exécution de nos scripts). Cela simplifie la définition des droits et le modèle de délégation, car il n'est plus nécessaire de donner des droits administratifs spécifiques à chaque utilisateur.&lt;/p&gt;&lt;p align="justify"&gt;Nous avons néanmoins le besoin de connaitre l'identité de l'utilisateur à l'origine de l'exécution d'une commande afin de se conformer au pré-requis de sécurité sur la production.&lt;/p&gt;&lt;p align="justify"&gt;La stratégie pour votre déploiement côté IIS doit donc être la suivante :&lt;/p&gt;&lt;p align="justify"&gt;Tout d'abord filtrer l'accès au site. Pour cela, il suffit simplement de définir des droits appropriés côté NTFS sur l'emplacement de publication. L'idéal étant de définir un groupe d'accès auquel vous donner les droits de lecture sur le site (côte NTFS), et de rajouter les membres adéquats.&lt;/p&gt;&lt;p align="justify"&gt;Côté IIS, il suffit de faire une publication classique, en désactivant l'accès "anonymous" au site web, et de sélectionner "Integrated Windows Authentification"&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/pilosite/SDbEW3Hd_YI/AAAAAAAAAHE/y1oILjGPvhM/powerASP5%5B3%5D.jpg"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="403" alt="powerASP5" src="http://lh3.ggpht.com/pilosite/SDbEX3Hd_ZI/AAAAAAAAAHM/ppJSZoGLrls/powerASP5_thumb%5B1%5D.jpg" width="322" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p align="justify"&gt;Ensuite, il faut définir un application pool pour déléguer l'exécution du code à un compte de service. Pour cela, créer un nouvel application pool, ouvrez ses propriétés et définissez l'Identité dans l'onget approprié.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/pilosite/SDbEY3Hd_aI/AAAAAAAAAHU/coSeXNK0aGI/powerASP6%5B3%5D.jpg"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="311" alt="powerASP6" src="http://lh5.ggpht.com/pilosite/SDbEZXHd_bI/AAAAAAAAAHc/QGpEWUcNKA4/powerASP6_thumb%5B1%5D.jpg" width="331" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p align="justify"&gt;Il ne vous reste plus qu'à définir cet application pool dans votre site web :&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/pilosite/SDbEaHHd_cI/AAAAAAAAAHk/kKVuxUCBR6o/PowerASP7%5B3%5D.jpg"&gt;&lt;/a&gt;&lt;a href="http://lh4.ggpht.com/pilosite/SDbEbHHd_dI/AAAAAAAAAHs/82dKXkX7RrI/PowerASP7%5B6%5D.jpg"&gt;&lt;/a&gt;&lt;a href="http://lh5.ggpht.com/pilosite/SDbEcXHd_eI/AAAAAAAAAH0/NHYdh3UAd1M/PowerASP7%5B10%5D.jpg"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="314" alt="PowerASP7" src="http://lh5.ggpht.com/pilosite/SDbEdXHd_fI/AAAAAAAAAH8/pPnuHSs4GWk/PowerASP7_thumb%5B4%5D.jpg" width="363" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p align="justify"&gt;Modifiez enfin votre web.config pour prendre en charge l'impersonalisation.&lt;/p&gt;&lt;p align="justify"&gt;Vous devez avoir la ligne "authentication mode", rajoutez en dessous le code suivant :&lt;br /&gt;&lt;/p&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"   &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;authentication&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;mode&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="Windows"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;identity&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;impersonate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="true"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;Et voilà, votre site est maintenant prêt pour l'impersonalisation, et l'accès est filtré par les droits NTFS. &lt;p&gt;&lt;/p&gt;&lt;p align="justify"&gt;En espérant que ce petit tutorial vous aura donner quelques idées, je reviendrai très prochainement sur un concept un peu plus poussé de portail web combinant ASP.NET 3.5, PowerShell, AJAX et Silverlight !&lt;/p&gt;&lt;p align="justify"&gt;Voici la source de l'exemple de cette partie &lt;a href="http://www.fileden.com/files/2008/5/19/1920192/PowerShellASP-2.zip"&gt;PowerShellASP2&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-445123217061739318?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/445123217061739318/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=445123217061739318' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/445123217061739318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/445123217061739318'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2008/05/powershell-et-aspnet-part-3.html' title='PowerShell et ASP.NET part 3'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/pilosite/SDbEWHHd_XI/AAAAAAAAAG8/eAYNibFF1Ys/s72-c/powerASP4_thumb%5B4%5D.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-5841408013381921328</id><published>2008-05-21T15:30:00.032+02:00</published><updated>2008-05-21T23:23:05.012+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>PowerShell et ASP.NET Part 2</title><content type='html'>&lt;p&gt;Rappel : le code source du site présenté est &lt;a href="http://www.fileden.com/files/2008/5/19/1920192/PowerShellASP.zip"&gt;disponible ici&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Vous avez besoins des éléments suivants pour l'utiliser :&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.microsoft.com/express/vwd/"&gt;WebDevelopper Express Edition&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.asp.net/AJAX/downloads/"&gt;Ajax controls toolkit et library&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Voyons maintenant un peu plus dans le détail l’architecture de ce site web et les différents blocs de code.&lt;/p&gt;&lt;h3&gt;WEB.CONFIG&lt;/h3&gt;&lt;p align="justify"&gt;Commençons par le plus simple : le fichier web.config de notre projet.&lt;/p&gt;&lt;p align="justify"&gt;J’ai apporté ici très peu de modifications : notre premier objectif est de rajouter les références des assemblies PowerShell au projet, afin de pouvoir créer un runspace et un pipeline pour exécuter notre code.&lt;/p&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solidfont-size:8pt;" &gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;assemblies&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;add&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;assembly&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;add&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;assembly&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;add&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;assembly&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;add&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;assembly&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;add&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;assembly&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="System.Management, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;add&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;assembly&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="System.Management.Automation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;assemblies&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Ceci va nous permettre de référencer ces dll dans le code-behind. Bien, passons maintenant a quelque chose de plus consistant : voyons notre interface utilisateur !&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;DEFAULT.ASPX&lt;/h3&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Vous pouvez faire votre design en utilisant simplement du glisser/déposer des différents éléments (textbox, combobox, etc…). Cet aspect est assez simple, pour ceux souhaitant apprendre les bases de la création d’interface ASP.NET, je vous propose la lecture &lt;a href="http://ditch.developpez.com/aspnet/introduction/"&gt;des excellents tutos de Didier Danse sur developpez.com&lt;/a&gt;, notamment les 2 premiers tomes.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Hormis ces aspects classiques de création de formulaire, voici les particularités de notre site web pour PowerShell :&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;UpdatePanel&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Dans la première partie de ce tutorial, je vous est indiqué que nous utilisons un peu d’Ajax pour :&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;· Gérer un Timer&lt;br /&gt;· Gérer le rafraichissement de la Textbox de sortie&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Pour pouvoir utiliser les extensions AJAX dans notre page web, il faut comme pré-requis tout d’abord placer un ScriptManager dans le document (qui va permettre la prise en charge des autres contrôles AJAX)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Je l’ai placé en début de form, classiquement :&lt;br /&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solidfont-size:8pt;" &gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;body&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;form&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;id&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="form1"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:ScriptManager&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="ScriptManager1"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:ScriptManager&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Passons à la suite, en faisant abstraction des petites fioritures en haut de la page, le gros de notre interface est ici :&lt;br /&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solidfont-size:8pt;" &gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:TextBox&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="TxtPowerShellScript"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;TextMode&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="MultiLine"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;Width&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="597px"&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;            &lt;span style="COLOR: rgb(255,0,0)"&gt;Height&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="194px"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;BackColor&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="#012456"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;ForeColor&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="#EEEDF0"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;Wrap&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="False"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:TextBox&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;        &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;br&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;        &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:UpdatePanel&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="UpdatePanel1"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;            &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;ContentTemplate&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;                &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:Button&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="BtnExecuteScript"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;Text&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="Launch Script"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;OnClick&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="BtnExecuteScript_Click"&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;                &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;br&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;                Output :&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;                &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;br&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;                &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:TextBox&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="TxtResult"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;Height&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="199px"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;TextMode&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="MultiLine"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;Width&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="600px"&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;                    &lt;span style="COLOR: rgb(255,0,0)"&gt;Wrap&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="False"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;BackColor&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="#012456"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;ForeColor&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="#EEEDF0"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:TextBox&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;                &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;br&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;                &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:Timer&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="Timer1"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;Enabled&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="False"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;Interval&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="100"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;OnTick&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="Timer1_Tick"&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;            &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;ContentTemplate&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;        &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:UpdatePanel&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;Le premier élément est notre TextBox pour taper le script :&lt;br /&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solidfont-size:8pt;" &gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:TextBox&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="TxtPowerShellScript"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;TextMode&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="MultiLine"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;Width&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="597px"&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;          &lt;span style="COLOR: rgb(255,0,0)"&gt;Height&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="194px"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;BackColor&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="#012456"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;ForeColor&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="#EEEDF0"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;Wrap&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="False"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:TextBox&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Rien de particulier ici, je l’ai nommé “TxtPowerShellScript” pour respecter un peu de normalisation, je l’ai définit en multiline et mis des couleurs proches de la console PowerShell pour le fun.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Ensuite, vous pouvez voir que mon bouton et la deuxième TextBox sont encapsulés dans un contrôle UpdatePanel. C’est ceci qui me permet de ne rafraichir que le contenu encapsulé et non la page entière.&lt;br /&gt;&lt;br /&gt;On y retrouve aussi notre Timer :&lt;br /&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solidfont-size:8pt;" &gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&lt;br /&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:Timer&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="Timer1"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;Enabled&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="False"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;Interval&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="100"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;OnTick&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="Timer1_Tick"&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;L’intervalle (Interval="100") defini le temps de rafraichissement du timer (en milliseconde), et le OnTick (OnTick="Timer1_Tick") la fonction appelée dans le Code-Behind. J’ai désactivé le Timer par défaut (Enabled="False")afin de ne pas faire de charge inutile. Il sera activé qu’au click sur notre bouton.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Voilà pour l’interface. Vous voyez qu’hormis la question de l’UpdatePanel (qui est après tout un contrôle comme les autres), nous ne sortons résolument pas des sentiers battus. Voyons maintenant ce qui se passe en coulisse dans notre Code-Behind, qui est le gros du morceau.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;h3&gt;DEFAULT.ASPX.CS&lt;/h3&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Nous arrivons maintenant dans le code C# qui va gérer notre invocation de PowerShell et le rafraichissement de la TextBox de sortie.&lt;br /&gt;&lt;/div&gt;&lt;p&gt;Pour commencer par le commencement, vous pouvez voir en début de code que j’appel en plus des instances par défaut du site asp.net généré par Visual 3 dll :&lt;/p&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solidfont-size:8pt;" &gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;&lt;span lang="EN-US"&gt;using&lt;/span&gt;&lt;span lang="EN-US"&gt; System.Management.Automation;&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;&lt;span lang="EN-US"&gt;using&lt;/span&gt;&lt;span lang="EN-US"&gt; System.Management.Automation.Runspaces;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="LINE-HEIGHT: 115%"&gt;using&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%"&gt; System.IO;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;b&gt;System.Management.Automation&lt;/b&gt; et &lt;b&gt;.Runspaces&lt;/b&gt; sont nécessaires pour faire créer le Runspace et le Pipeline. &lt;b&gt;System.IO&lt;/b&gt; va nous servir pour la conversion du contenu de la TextBox de script comme nous allons le voir plus loin.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Passons maintenant au code proprement dit. Nous allons tout d’abord créer les objets Runspace et Pipeline pour qu’il soit exposé sur l’ensemble de notre classe.&lt;br /&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solidfont-size:8pt;" &gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;Runspace runspace = RunspaceFactory.CreateRunspace();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;Pipeline pipe;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Nous allons maintenant analyser le code en partant de l’action de l’utilisateur : le click sur le bouton. La fonction (que vous trouvez ligne 85) est la suivante :&lt;br /&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solidfont-size:8pt;" &gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;protected&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;void&lt;/span&gt; BtnExecuteScript_Click(&lt;span style="COLOR: rgb(0,0,255)"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;{&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;string&lt;/span&gt; strCurrentId = System.Security.Principal.WindowsIdentity.GetCurrent().Name;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)" size="8pt"&gt;    &lt;span style="COLOR: rgb(0,128,0)"&gt;// Enable timer and disable button, clear TxtResult textbox&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.Timer1.Enabled = &lt;span style="COLOR: rgb(0,0,255)"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)" size="8pt"&gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.BtnExecuteScript.Enabled = &lt;span style="COLOR: rgb(0,0,255)"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)" size="8pt"&gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.TxtResult.Text = &lt;span style="COLOR: rgb(0,96,128)"&gt;""&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;    &lt;span style="COLOR: rgb(0,128,0)"&gt;// put the username at the beginning of the output (optional)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)"&gt;    Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;] = &lt;span style="COLOR: rgb(0,96,128)"&gt;"Initiateur de la demande : "&lt;/span&gt; + strCurrentID + &lt;span style="COLOR: rgb(0,96,128)"&gt;"\r\n"&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)"&gt;     &lt;span style="COLOR: rgb(0,128,0)"&gt;// Gather script from the TxtPowerShellScript and convert it from html to clean text&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;    &lt;span style="COLOR: rgb(0,128,0)"&gt;// then call executePowerShellCode function with the result&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)"&gt;      &lt;span style="COLOR: rgb(0,0,255)"&gt;string&lt;/span&gt; strContent = TxtPowerShellScript.Text;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;    StringWriter writer = &lt;span style="COLOR: rgb(0,0,255)"&gt;new&lt;/span&gt; StringWriter();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)"&gt;     Server.HtmlDecode(strContent, writer);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.executePowerShellCode(writer.ToString());&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;"  &gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Voyons un peu ce qu’il se passe. Pour commencer, je crée une string strCurrentID qui va récupérer le nom de l’utilisateur en cours. Ceci n’est pas obligatoire dans notre exemple, mais nous verrons par la suite qu’il est intéressant pour nous de connaitre cette information. En effet, dans le cadre du déploiement de ce site ASP.NET, c’est un compte de service qui sera utilisé pour exécuter le code côté serveur.&lt;br /&gt;&lt;br /&gt;Or, comme nous souhaitons (si ce n’est pas le cas, vous devriez !) tracer l’activité du site, il est important de connaitre l’utilisateur à l’origine de l’action, histoire par exemple de savoir à qui tirer les oreilles en cas d’utilisation abusive de notre belle page.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;System.Security.Principal.WindowsIdentity.GetCurrent().Name nous donne cette information en récupérant le Login de l’utilisateur.&lt;br /&gt;&lt;br /&gt;Ensuite, nous allons activer le Timer :&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.Timer1.Enabled = &lt;span style="COLOR: rgb(0,0,255)"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Désactiver le bouton (pour éviter le lancement par erreur du script alors qu’un script est déjà en exécution)&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.BtnExecuteScript.Enabled = &lt;span style="COLOR: rgb(0,0,255)"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;et vider la TextBox de sortie :&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.TxtResult.Text = &lt;span style="COLOR: rgb(0,96,128)"&gt;""&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Ensuite nous initierions notre fameuse variable de Session que j’ai appelé « PowerTrace » avec le nom de la personne exécutant la commande&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;] = &lt;span style="COLOR: rgb(0,96,128)"&gt;"Initiateur de la demande : "&lt;/span&gt; + strCurrentID + &lt;span style="COLOR: rgb(0,96,128)"&gt;"\r\n"&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Un peu d’explication s’impose sur ce choix. Toute la subtilité ici est de pouvoir transmettre à notre page asp.net ce que récupère le Code-Behind quand nous rafraichissons la page. Comme les 2 mondes sont isolés (chacun s’exécute dans son contexte : le page web côté client et le code-behind côté serveur), il nous faut trouver un moyen pour transmettre des informations de l’un à l’autre (ici en l’occurrence, passer la sortie de notre script à la TextBox).&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Il existe plusieurs solutions plus ou moins élégantes (créer un fichier texte temporaire, rajouter la sortie dans l’URL…) mais la variable de session est dans notre contexte la meilleure des méthodes. Cela permet de mettre à disposition des informations lisible du côté de l’interface qui se conserve pendant l’ensemble de la session de l’utilisateur. Sinon, par défaut, au rafraîchissement toutes les informations récoltées côté code-behind disparaîtraient. Comme notre sortie de scripts ne prendra jamais une place démesurée en mémoire et qu’il s’agit d’une utilisation en intranet relativement restreinte, c’est ici un bon choix facile à mettre en place.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Le contenu de cette variable est donc exploitable pendant toute la durée de la session de l’utilisateur. Ceci étant fait, nous allons maintenant récupérer le contenu de la TextBox contenant le script :&lt;/div&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;string&lt;/span&gt; strContent = TxtPowerShellScript.Text;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Problème ici : nous sommes dans un contexte HTML, le contenu de cette TextBox est donc au format HTML. Ceci ne nous permet pas d’exécuter le code tels que, car des informations se glissent dans le texte (retour chariot notamment, qui se font avec la syntaxe \r\n). Le code est donc inutilisable par PowerShell tels quel.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Heureusement pour nous, il existe une méthode qui nous permet de décoder l’HTML pour obtenir du texte classique : HtmlDecode&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;C’est elle que j’utilise ici : je créé une instance d’un StringWriter (qui permet de créer une string), et j’utilise cette méthode pour inscrire le texte « décodé » dans cette string.&lt;br /&gt;&lt;/div&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;StringWriter writer = &lt;span style="COLOR: rgb(0,0,255)"&gt;new&lt;/span&gt; StringWriter()&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;"  &gt;Server.HtmlDecode(strContent, writer);&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Je fais appel ensuite à ma fonction d’exécution de code PowerShell avec le résultat :&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.executePowerShellCode(writer.ToString());&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Passons donc à l’analyse de cette fonction « executePowerShellCode »&lt;br /&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solidfont-size:8pt;" &gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)" size="8pt"&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" size="8pt" color="black"&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;void&lt;/span&gt; executePowerShellCode(&lt;span style="COLOR: rgb(0,0,255)"&gt;string&lt;/span&gt; code)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" size="8pt" color="black"&gt;{&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;"  &gt;    runspace.Open();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" size="8pt" color="black"&gt;    pipe = runspace.CreatePipeline(code);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;"  &gt;    pipe.Input.Close();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none"&gt;    &lt;span style="COLOR: rgb(0,128,0)"&gt;// Call output_DataReady when data arrived in the pipe&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;"  &gt;    pipe.Output.DataReady += &lt;span style="COLOR: rgb(0,0,255)"&gt;new&lt;/span&gt; EventHandler(Output_DataReady);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none"&gt;    &lt;span style="COLOR: rgb(0,128,0)"&gt;// Call pipe_StateChanged &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none" size="8pt" face="consolas,'Courier New',courier,monospace"&gt;    pipe.StateChanged += &lt;span style="COLOR: rgb(0,0,255)"&gt;new&lt;/span&gt; EventHandler&amp;lt;PipelineStateEventArgs&amp;gt;(pipe_StateChanged);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"   &gt;    pipe.InvokeAsync();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none" size="8pt" face="consolas,'Courier New',courier,monospace"&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Je n’est pas réinventé la roue, j’utilise la méthode la plus connue que vous trouverez dans pas mal d’exemple sur le net :&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Je commence par ouvrir le runspace&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)"&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none"&gt;runspace.Open();&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Ensuite je créé un pipeline dans ce runspace avec le code retourné précédemment&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)"&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none"&gt;pipe = runspace.CreatePipeline(code);&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Je ferme le pipeline en écriture&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)"&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"   &gt;pipe.Input.Close();&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Ensuite nous créons un gestionnaire d’évènement, qui va tout simplement appeler la fonction « Output_DataReady » quand quelque chose se présente dans la sortie du pipeline&lt;br /&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: rgb(0,0,0); BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;" &gt;pipe.Output.DataReady += &lt;span style="COLOR: rgb(0,0,255)"&gt;new&lt;/span&gt; EventHandler(Output_DataReady);&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Nous créons ensuite un autre gestionnaire d’évènement, qui lui va appelé la fonction “pipe_StateChanged” quand le pipeline change d’état. En l’occurrence ici, nous allons tester si l’état du pipeline est « Terminé », qui signifie la fin du script et donc des actions à effectuer tels que la réactivation du bouton Executer comme nous le verrons plus loin.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Ensuite nous appelons la méthode « InvokeAsync() » qui nous permet d’exécuter le pipeline en asynchrone.&lt;br /&gt;&lt;/div&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)"&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"   &gt;pipe.InvokeAsync();&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Ok maintenant, notre code est en attente d’activité côté pipeline. Voyons a présent ce qu’il se passe quand des données arrivent dans la sortie du pipeline avec notre fonction Output_DataReady&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid" size="8pt"&gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)"&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"   &gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;void&lt;/span&gt; Output_DataReady(&lt;span style="COLOR: rgb(0,0,255)"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none" size="8pt" face="consolas,'Courier New',courier,monospace"&gt;{&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" size="8pt" face="consolas,'Courier New',courier,monospace" color="black"&gt;    PipelineReader&amp;lt;PSObject&amp;gt; reader = (PipelineReader&amp;lt;PSObject&amp;gt;)sender;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none" size="8pt" face="consolas,'Courier New',courier,monospace"&gt;    String strPowershellTrace = reader.Read().ToString();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" size="8pt" face="consolas,'Courier New',courier,monospace" color="black"&gt;    Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;] += strPowershellTrace + &lt;span style="COLOR: rgb(0,96,128)"&gt;"\r\n"&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Ici nous allons lire la sortie du pipeline que nous inscrivons dans l’objet reader :&lt;br /&gt;&lt;/div&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;"  &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: rgb(0,0,0); BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none"&gt;PipelineReader&amp;lt;PSObject&amp;gt; reader = (PipelineReader&amp;lt;PSObject&amp;gt;)sender;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Ensuite, nous définissons une variable de type string qui récupère cette sortie sous forme de… string !&lt;br /&gt;&lt;/div&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;"  &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: rgb(0,0,0); BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;"  &gt;String strPowershellTrace = reader.Read().ToString();&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Il ne nous reste plus qu’a rajouter cette variable à notre variable de session :&lt;br /&gt;&lt;/div&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;"  &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: rgb(0,0,0); BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;"  &gt;Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;] += strPowershellTrace + &lt;span style="COLOR: rgb(0,96,128)"&gt;"\r\n"&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Notez que je rajoute “\r\n” derrière cette variable pour gérer le retour chariot. Vous voyez, c’est plutôt simple à comprendre. Pour finir sur le processus d’exécution de code PowerShell, voyons la dernière fonction qui gère le changement d’état du pipeline :&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;Ici, je pose une condition sur l’état du pipeline : si il a le statut « Completed », nous allons agir, sinon nous ne faisons rien.&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;"  &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: rgb(0,0,0); BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;"  &gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;if&lt;/span&gt; (pipe.PipelineStateInfo.State == PipelineState.Completed)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: rgb(0,0,0); BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none" size="8pt" face="consolas,'Courier New',courier,monospace"&gt;…&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Alors, que fait-on quand le statut est Completed ? Premièrement nous allons fermer le runspace&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Ensuite, tant que la Variable de Sessions n’est pas nulle et qu’elle contient quelque chose (nombre de caractère superieur à 0), nous n’y touchons pas. Ceci afin de laisser le temps au Timer d’inscrire son contenu dans la TextBox de Sortie. Nous verrons cela tout de suite après en analysant la fonction du Timer.&lt;br /&gt;&lt;/div&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid"&gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;"  &gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: rgb(0,0,0); BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" size="8pt" face="consolas,'Courier New',courier,monospace"&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;while&lt;/span&gt; ((Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;] != &lt;span style="COLOR: rgb(0,0,255)"&gt;null&lt;/span&gt;) &amp;amp;&amp;amp; (Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;].ToString().Length &amp;gt; 0))&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: rgb(0,0,0); BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none" size="8pt" face="consolas,'Courier New',courier,monospace"&gt;{&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: rgb(0,0,0); BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none"&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: rgb(0,0,0); BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" size="8pt" face="consolas,'Courier New',courier,monospace" color="black"&gt;runspace.Close();&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Il ne nous reste plus ensuite qu’à supprimer cette variable de session dans l’attente d’un nouveau script :&lt;br /&gt;&lt;/div&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;"  &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none"&gt;Session.Remove(&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Voyons maintenant notre fameux Timer :&lt;br /&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; BACKGROUND-COLOR: rgb(244,244,244)font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"  &gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" size="8pt" face="consolas,'Courier New',courier,monospace" color="black"&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;protected&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;void&lt;/span&gt; Timer1_Tick(&lt;span style="COLOR: rgb(0,0,255)"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" size="8pt" face="consolas,'Courier New',courier,monospace" color="black"&gt;    {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"&gt;        &lt;span style="COLOR: rgb(0,0,255)"&gt;if&lt;/span&gt; (Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;] == &lt;span style="COLOR: rgb(0,0,255)"&gt;null&lt;/span&gt;)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" size="8pt" face="consolas,'Courier New',courier,monospace" color="black"&gt;        {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"&gt;            &lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.BtnExecuteScript.Enabled = &lt;span style="COLOR: rgb(0,0,255)"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none"&gt;            Timer1.Enabled = &lt;span style="COLOR: rgb(0,0,255)"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"&gt;            &lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.TxtResult.Text += &lt;span style="COLOR: rgb(0,96,128)"&gt;"Fin du script"&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none"&gt;        }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none" size="8pt" face="consolas,'Courier New',courier,monospace"&gt;        &lt;span style="COLOR: rgb(0,0,255)"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none"&gt;        {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none" size="8pt" face="consolas,'Courier New',courier,monospace"&gt;            String strPoshTrace = Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;].ToString();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none"&gt;              &lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.TxtResult.Text += strPoshTrace;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none" size="8pt" face="consolas,'Courier New',courier,monospace"&gt;            Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;] = &lt;span style="COLOR: rgb(0,96,128)"&gt;""&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none"&gt;        }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Indépendamment des autres fonctions, celle-ci est appelé par notre Timer à intervalles réguliés (dans notre cas toute les 100 ms, on peut bien sûr élargir un peu ce temps)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Ici nous faisons la chose suivante :&lt;br /&gt;&lt;br /&gt;Si la Variable de Session est Null (donc directement après sa suppression par la fonction pipe_StateChanged), nous allons :&lt;br /&gt;&lt;br /&gt;· Réactiver le bouton&lt;br /&gt;· Désactiver le Timer&lt;br /&gt;· Inscrire « Fin du script » dans la TextBox de sortie&lt;br /&gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;"  &gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.BtnExecuteScript.Enabled = &lt;span style="COLOR: rgb(0,0,255)"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"   &gt;Timer1.Enabled = &lt;span style="COLOR: rgb(0,0,255)"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.TxtResult.Text += &lt;span style="COLOR: rgb(0,96,128)"&gt;"Fin du script"&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" size="8pt" face="consolas,'Courier New',courier,monospace" color="black"&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Sinon, on récupère le contenu de la variable de session dans une string&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;"  &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"   &gt;String strPoshTrace = Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;].ToString();&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;On ajoute celle-ci à la TextBox de sortie&lt;br /&gt;&lt;/div&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none" size="8pt" face="consolas,'Courier New',courier,monospace"&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" size="8pt" face="consolas,'Courier New',courier,monospace" color="black"&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.TxtResult.Text += strPoshTrace;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;et on vide la variable de session de son contenu&lt;br /&gt;&lt;/div&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none" size="8pt" face="consolas,'Courier New',courier,monospace"&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none"&gt;Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;] = &lt;span style="COLOR: rgb(0,96,128)"&gt;""&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Notez que nous ne supprimons pas ici la variable, ce qui fait que notre condition dans la fonction pipe_StateChanged est valide :&lt;br /&gt;&lt;/div&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; BACKGROUND-COLOR: rgb(244,244,244)font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"  &gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none"&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;while&lt;/span&gt; ((Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;] != &lt;span style="COLOR: rgb(0,0,255)"&gt;null&lt;/span&gt;) &amp;amp;&amp;amp; (Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;].ToString().Length &amp;gt; 0))&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Voilà pour notre tour du propriétaire de ce premier projet. Nous verrons dans la troisième partie de ce tutorial comment piloter un script à partir d’un formulaire, et comment déployer ce site web sur un serveur IIS avec la sécurité adéquate.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-5841408013381921328?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/5841408013381921328/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=5841408013381921328' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/5841408013381921328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/5841408013381921328'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2008/05/powershell-et-aspnet-part-2.html' title='PowerShell et ASP.NET Part 2'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-8300007080116571421</id><published>2008-05-16T16:11:00.057+02:00</published><updated>2008-12-09T20:10:56.198+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>PowerShell et ASP.NET Part 1</title><content type='html'>&lt;div align="justify"&gt;English Version Available &lt;a href="http://devinfra-us.blogspot.com/2008/05/powershell-and-aspnet.html"&gt;here&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;Comme nous l'avons vu, PowerShell permet de créer des interfaces graphiques en passant par les winforms .NET. Ainsi, nous pouvons créer des interfaces pour piloter nos scripts. C'est un vrai plus, d'autant que des outils comme &lt;a href="http://www.adminscripteditor.com/"&gt;AdminScriptEditor&lt;/a&gt; rendent cela particulièrement simple.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Dans mes peregrinations, une question m'est revenue assez souvent :&lt;strong&gt; &lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;strong&gt;comment pourrait-on intégrer facilement PowerShell avec une page web ?&lt;/strong&gt;&lt;/div&gt;&lt;p align="justify"&gt;A juste titre, utiliser un portail web plutôt que des winforms "clients lourds" apporte plusieurs avantages indéniables :&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div align="justify"&gt;· Pas besoin d'installer PowerShell ou des Snapins sur l'ensemble des postes d'admins pour utiliser des scripts (je pense par exemple aux interfaces de provisioning Active Directory, un gestionnaire de machines virtuelles, etc... )&lt;br /&gt;&lt;br /&gt;· ... Donc pouvoir centraliser et déléguer l'administration facilement&lt;br /&gt;&lt;br /&gt;· Filtrer l'accès et l'utilisation de Powershell dans l'entreprise (tout s'exécute du serveur et non du poste)&lt;br /&gt;&lt;br /&gt;· Traçabilité : d'un point unique, on peut savoir qui fait quoi, et potentiellement gérer le CTRL+Z salvateur&lt;br /&gt;&lt;br /&gt;· Peut s'implémenter sur le portail d'entreprise (Sharepoint ou autre)&lt;/div&gt;&lt;p align="justify"&gt;Tout ceci serait formidable, mais ne va pas sans quelques inconvenients, du moins au premier abord pour qui n'a jamais touché un site ASP.NET : &lt;/p&gt;· Développer en asp.net et C# s'éloigne résolument du scripting.&lt;br /&gt;· Les exemples de méthodes d'invocation de PowerShell via C# ne donne pas forcément envie à un profil infra de se lancer dans le bain.&lt;br /&gt;· On peut alors plutôt s'orienter sur du developpement C# pour arriver au résultat......&lt;br /&gt;· Or il faut avoir la chance d'avoir un developpeur .NET pur et dur sous la main. &lt;div align="justify"&gt;&lt;br /&gt;C'est pourquoi je vous soumet ici un premier exemple d'interaction très simple entre une page ASP.NET et du script Powershell, qui prend le problème sous un angle plus "InfraPeople-Compliant". Pour rendre les choses plus digestes, nous allons séparer les choses :&lt;/div&gt;&lt;br /&gt;· ASP.NET et C# pour gérer uniquement l'interface utilisateur&lt;br /&gt;· Appel de code powershell pur et non de bloc dans du code C#&lt;br /&gt;· Dialogue entre l'output de PowerShell et le site web pour suivre la progression des commandes. &lt;p align="justify"&gt;Ceci permet de bien séparer les 2 aspects du portail, et de garder ainsi PowerShell comme moteur de traitement tels qu'on a l'habitude de l'utiliser en scripting classique.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;Comme nous allons le voir au cours de ce tutorial, le code est plutôt simple et la page très légère : et pourtant avec ceci nous allons pouvoir effectuer des commandes complexes et riches grâce à PowerShell. &lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-weight: bold;"&gt;update : &lt;/span&gt;Voici une petite vidéo de l'exemple pour vous donner une idée&lt;/p&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/RHRLcUUXZSQ&amp;hl=fr"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/RHRLcUUXZSQ&amp;hl=fr" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;Je ne vais pas faire ici un cours sur ASP.NET, car d'une part je ne suis pas le mieux placé pour le faire, d'autre part comme vous allez le voir nous n'allons utiliser que les fondamentaux pour arriver à nos fins.&lt;br /&gt;&lt;br /&gt;Reste quelques notions de bases indispensables pour pouvoir saisir la suite :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Quelques bases ASP.NET&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pour parler très schématiquement avec une bonne dose de simplification, on peut concevoir une site ASP.NET comme une page HTML qui pourrait faire exécuter du code .NET côté serveur, et non uniquement via le browser côté poste client.&lt;/p&gt;&lt;div align="justify"&gt;Voici un exemple qui va être notre premier projet. Notez que nous pouvons (et allons!) utiliser la version gratuite de Visual Studio pour le web : &lt;a href="http://www.microsoft.com/express/vwd/"&gt;Visual Studio Web developper Express Edition&lt;/a&gt; que je vous invite à télécharger. Cette version est tout à fait adaptée à nos besoins et nous permettra de prendre en charge l'ensemble du développement, ne nous privons pas. Vous aurez aussi besoin des Ajax Control Toolkit et library à télécharger &lt;a href="http://www.asp.net/AJAX/downloads/"&gt;ici&lt;/a&gt; .&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://1.bp.blogspot.com/_Nb_tnJCL_Vw/SC2aprj_oPI/AAAAAAAAAFw/GGqIEwVVmLI/s1600-h/PowerShellASP2.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5200983185541800178" style="margin: 0px auto 10px; display: block; text-align: center;" alt="" src="http://1.bp.blogspot.com/_Nb_tnJCL_Vw/SC2aprj_oPI/AAAAAAAAAFw/GGqIEwVVmLI/s400/PowerShellASP2.jpg" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p align="justify"&gt;Un site ASP.NET à minima est composé des éléments suivants :&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Une page ASP.NET (par défaut ici : default.aspx)&lt;/strong&gt; : c'est elle qui heberge le code de l'interface e la page (les boutons, cases et autres joyeusetés), au format html et ASP. On y trouve aussi souvent du javascript, mais ceci n'est pas important ni utilisé pour notre exemple. &lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;Un fichier .cs correspondant à la page ASPX (ici : default.aspx.cs)&lt;/strong&gt; : c'est ce fichier qui contient ce que l'on appelle le "code-behind". C'est le code côté serveur qui sera invoqué par l'interaction entre l'utilisateur et la page. Ce code est dans un langage .NET (C# ou VB.NET). Dans notre cas nous allons utiliser C# qui est proche de PowerShell dans sa structure. &lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;web.config&lt;/strong&gt; : fichier de configuration du site web. Pour faire simple, on y trouve la configuration du site asp, méthode d'authentification, invocation des DLL (dans notre cas celles qui permettent d'exécuter le code PowerShell), etc..&lt;br /&gt;&lt;br /&gt;Bien sûr, l'outil de developpement nous facilite la tâche, et tout est pré-configuré quand vous créez un nouveau projet. Avant de rentrer concrètement sur la création de notre page ASP.NET, voici la technique utilisée pour faire appel à nos scripts d'un formulaire :&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;La stratégie d'invocation de PowerShell&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;Le schéma ci-dessous présente la stratégie utilisée pour cet exemple d'invocation de PowerShell par ASP.NET, que nous allons décrire en détail dans la seconde partie de ce tutorial :&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;a href="http://1.bp.blogspot.com/_Nb_tnJCL_Vw/SDE2Drj_oQI/AAAAAAAAAF4/MovhUNCKrq8/s1600-h/PrezASP1.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5201998481450836226" style="margin: 0px auto 10px; display: block; text-align: center;" alt="" src="http://1.bp.blogspot.com/_Nb_tnJCL_Vw/SDE2Drj_oQI/AAAAAAAAAF4/MovhUNCKrq8/s400/PrezASP1.png" border="0" /&gt;&lt;/a&gt; Notre site comporte 2 textbox, une pour taper un script, l'autre pour récupérer le retour eventuel généré par ce script, et un bouton pour lancer l'exécution : le tour est joué. Comme vous le voyez, côté interface on est plutôt dans quelque chose de basique.&lt;/p&gt;&lt;p align="justify"&gt;Le principe est assez simple, nous allons y revenir en détail dans la partie 2 de ce tutorial, mais voici les bases :&lt;/p&gt;&lt;p align="justify"&gt;Quand on clique sur le bouton "Executer" voici ce qu'il se passe:&lt;/p&gt;&lt;p align="justify"&gt;On active un Timer &lt;strong&gt;(1)&lt;/strong&gt;, je reviendrai sur ce point plus tard, mais disons pour le moment qu'il s'agit d'un mécanisme qui exécute du code en boucle à une fréquence donnée (d'où le nom de Timer d'ailleurs). &lt;/p&gt;&lt;p align="justify"&gt;Dans le même temps, le code-behind invoque un runspace et un pipeline PowerShell en asynchrone, prend le contenu de la première Textbox et l'exécute dans le pipeline &lt;strong&gt;(2&lt;/strong&gt;). &lt;/p&gt;&lt;p align="justify"&gt;Toute les secondes, notre timer vérifie la sortie du pipeline &lt;strong&gt;(3)&lt;/strong&gt; et inscrit ce qu'il trouve dans une variable spéciale dites "de session" &lt;strong&gt;(4) &lt;/strong&gt;(on verra pourquoi dans la seconde partie). &lt;/p&gt;&lt;p align="justify"&gt;On rafraichit la Textbox de sortie avec le contenu de la variable de session &lt;strong&gt;(5)&lt;/strong&gt;. Le timer repart jusqu'à la liberation du pipeline &lt;strong&gt;(6).&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;L'utilisation du Timer nous permet d'avoir une vue relativement temps réel de la sortie du script, du moins toute les secondes. Notez que le script n'est pas obligé d'avoir une sortie : comme tout script PowerShell, il peut se passer plein de choses sans rien voir dans la console, donc prenez garde a ce que vous codez ;).&lt;/p&gt;&lt;p align="justify"&gt;J'ai gardé le code le plus simple possible pour vous permettre d'identifier les différentes fonctions facilement. Nous enrichirons plus tard notre interface une fois que nous aurons vu la composition du code dans la seconde partie de ce tutorial.&lt;/p&gt;&lt;p align="justify"&gt;Notez toutefois que nous utilisons un peu d'AJAX pour gérer la seconde boite de dialogue : Ajax nous permet ici de rafraichir la boite seule sans rafraichir toute la page. Nous verrons dans la seconde partie qu'intégrer ce type de composant AJAX avec ASP.NET est très facile, des composants prêt à l'emploi sont fournis sans avoir à coder la moindre ligne de javascript ni d'XML.&lt;/p&gt;&lt;p align="justify"&gt;Pour le moment vous pouvez déjà tester ce site en ouvrant tout simplement le projet en pièce jointe à cet article avec Web developper Express.&lt;/p&gt;&lt;p&gt;&lt;a href="http://1.bp.blogspot.com/_Nb_tnJCL_Vw/SDHjVrj_oRI/AAAAAAAAAGA/V_41o9osveA/s1600-h/powerASP3.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5202189006200086802" style="margin: 0px auto 10px; display: block; text-align: center;" alt="" src="http://1.bp.blogspot.com/_Nb_tnJCL_Vw/SDHjVrj_oRI/AAAAAAAAAGA/V_41o9osveA/s400/powerASP3.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Tapez votre script dans la textbox du haut, le résultat s'affichera en bas. &lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;Note &lt;/strong&gt;: le script s'exécute côté serveur (ici si vous faites un test en local, c'est sur votre machine que le script s'exécute.) Notez que nous récupérons la sortie "objet" de PowerShell : c'est pour cela que j'utilise dans cet exemple le cmdlet "out-string" pour afficher en sortie ce qui apparaitrait dans la console.&lt;/p&gt;&lt;p align="justify"&gt;vous pouvez bien sûr lancer n'importe quelle commande Powershell (attention donc aux fausses manips :) ). Le site est "light" pour vous permettre de bien saisir le code : point de contrôle d'erreurs ni fioritures côté interface.&lt;/p&gt;&lt;p align="justify"&gt;Nous verrons dans la seconde partie comment est articulé le code, comment piloter un script avec un formulaire et les questions relatives à la sécurité.&lt;/p&gt;&lt;div align="justify"&gt;Voici la source : &lt;a href="http://www.fileden.com/files/2008/5/19/1920192/PowerShellASP.zip"&gt;PowerShellASP.zip&lt;/a&gt; , n'hésitez pas à poser vos questions en commentaire !&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-8300007080116571421?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/8300007080116571421/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=8300007080116571421' title='3 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/8300007080116571421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/8300007080116571421'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2008/05/powershell-et-aspnet-part-1.html' title='PowerShell et ASP.NET Part 1'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Nb_tnJCL_Vw/SC2aprj_oPI/AAAAAAAAAFw/GGqIEwVVmLI/s72-c/PowerShellASP2.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-3759371914889500507</id><published>2008-04-08T12:52:00.013+02:00</published><updated>2008-04-09T14:19:15.211+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mindmap'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Mindmap PowerShell avec Silverlight</title><content type='html'>&lt;div align="justify"&gt;English version available &lt;a href="http://devinfra-us.blogspot.com/2008/04/powershell-mindmap-with-silverlight.html"&gt;here&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div align="justify"&gt;Michael S. Scherotter propose sur son blog &lt;a href="http://blogs.msdn.com/synergist/default.aspx"&gt;synergist&lt;/a&gt; une &lt;a href="http://blogs.msdn.com/synergist/default.aspx"&gt;application permettant de convertir des mindmap créés avec MindManager en silverlight&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;C'est amusant, facile à utiliser et très inspirant pour l'intégration de Silverlight et du mindmapping dans notre vie de développeurs infrastructure de tous les jours :)&lt;br /&gt;&lt;br /&gt;Pour illustrer ceci, je vous ai mis ci-dessous un exemple de mindmap avec différentes ressources sur PowerShell. Blogger me limitant un peu sur la taille de la zone de texte, n'hésitez pas à utiliser le bouton "full screen" en haut à droite du contrôle silverlight. Les liens sont bien sûr utilisables.&lt;br /&gt;&lt;br /&gt;&lt;iframe style="width: 440px; height: 400px;" src="http://silverlight.services.live.com/invoke/14606/PoshLiens/iframe.html" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-3759371914889500507?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/3759371914889500507/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=3759371914889500507' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/3759371914889500507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/3759371914889500507'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2008/04/mindmap-powershell-avec-silverlight.html' title='Mindmap PowerShell avec Silverlight'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-2151809309641528104</id><published>2008-04-07T22:51:00.027+02:00</published><updated>2010-07-07T13:52:18.778+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='System Center'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><title type='text'>PowerShell et SCCM Part 2</title><content type='html'>&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;PowerShell et SCCM Part 2&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;English Version available &lt;a href="http://devinfra-us.blogspot.com/2008/04/sccm-and-powershell-part-2.html"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;Intégration de l'ordinateur dans une collection spécifique&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;Ok, notre ordinateur est inscrit dans SCCM, voyons maintenant comment l'inscrire dans une collection spécifique. Que nous dit le SDK ? l'exemple VBScript est le suivant : &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="COLOR: rgb(0,0,153)"&gt;&lt;span style="COLOR: rgb(0,102,0)"&gt;' Add the computer to the all systems collection.&lt;/span&gt;&lt;br /&gt;set collection = connection.Get("SMS_Collection.CollectionID='SMS00001'")&lt;br /&gt;set collectionRule=connection.Get("SMS_CollectionRuleDirect").SpawnInstance_&lt;br /&gt;collectionRule.ResourceClassName="SMS_R_System"&lt;br /&gt;collectionRule.ResourceID= outParams.ResourceID&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,153)"&gt;collection.AddMembershipRule collectionRule&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;Qu'on peut organiser comme suit pour plus de facilité de compréhension :&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="COLOR: rgb(0,0,153)"&gt;set collectionRule=connection.Get("SMS_CollectionRuleDirect").SpawnInstance_ collectionRule.ResourceClassName="SMS_R_System" collectionRule.ResourceID= outParams.ResourceID&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,153);font-size:78%;"&gt;set collection = connection.Get("SMS_Collection.CollectionID='SMS00001'")&lt;br /&gt;collection.AddMembershipRule collectionRule&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;L'exemple nous parle de la collection "All Systems", mais comme nous l'avons vu, le fait de déclarer un ordinateur dans SCCM l'inscrit par défaut dans cette collection. Par contre, cet exemple nous donne tout les éléments utiles : il nous montre qu'il faut créer un objet de type "SMS_CollectionRuleDirect", le paramétrer, puis invoquer la méthode AddMemberShiprule avec cet objet en paramètre.&lt;/div&gt;&lt;p&gt;Allons y donc tranquillement, étape par étape&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Créer un objet issue de la classe SMS_CollectionRuleDirect&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;Pour instancier une classe WMI en PowerShell, on peut utiliser la syntaxe suivante :&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="COLOR: rgb(0,0,102);font-size:85%;"&gt;$objColRuledirect = [WmiClass]"\\$Computer\ROOT\SMS\site_001:SMS_CollectionRuleDirect"&lt;/span&gt; &lt;/p&gt;&lt;p align="left"&gt;On voit qu'en passant par les psbase.properties les 3 propriétés de l'objet :&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;a href="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_qTSuvz9rI/AAAAAAAAAFE/POlmKdPMkVI/s1600-h/SCCM16.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5186619870866044594" style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_qTSuvz9rI/AAAAAAAAAFE/POlmKdPMkVI/s400/SCCM16.jpg" border="0" /&gt;&lt;/a&gt; Nous avons vu dans l'exemple du SDK que deux propriétés sont à renseigner :&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;ResourceClassName avec la valeur "SMS_R_System"&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;ResourceID avec la propriété ResourceID de l'objet ordinateur créé précédemment&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="left"&gt;Soit en PowerShell : &lt;/p&gt;&lt;p&gt;&lt;span style="COLOR: rgb(0,0,102)"&gt;&lt;span style="font-size:85%;"&gt;$objColRuleDirect.psbase.properties["ResourceClassName"].value = "SMS_R_System"&lt;br /&gt;$objColRuleDirect.psbase.properties["ResourceID"].value = $objCMComputer.resourceID&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify"&gt;On voit ci dessous les propriétés de l'objet ordinateur créé comme dans la Part 1 et notre objet CollectionRuleDirect proprement configuré :&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;a href="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_qVzuvz9sI/AAAAAAAAAFM/KglQQvdIOqo/s1600-h/SCCM17.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5186622636824983234" style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_qVzuvz9sI/AAAAAAAAAFM/KglQQvdIOqo/s400/SCCM17.jpg" border="0" /&gt;&lt;/a&gt; Il ne nous reste plus à présent qu'à utiliser cet objet avec la classe SMS_Collection&lt;/p&gt;&lt;p&gt;&lt;span style="COLOR: rgb(0,0,0);font-size:130%;"&gt;&lt;strong&gt;Utiliser la méthode AddMemberShipRule de la classe SMS_Collection&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;Qui dit méthode WMI, dit petit coup d'oeil dans WmiExplorer pour avoir notre exemple pré-maché &lt;em&gt;&lt;span style="font-size:85%;"&gt;(qui a dit feignant ?)&lt;/span&gt;&lt;/em&gt; :&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_qXwOvz9tI/AAAAAAAAAFU/kbnCG5ZtC6w/s1600-h/SCCM18.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5186624775718696658" style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_qXwOvz9tI/AAAAAAAAAFU/kbnCG5ZtC6w/s400/SCCM18.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify"&gt;Ce qu'il nous faut en paramètre, c'est l'ID de la collection cible. Alors ici 2 options : soit utiliser en dur l'ID de la collection que l'on trouve dans la console SCCM (pas sport), ou déterminer l'ID de la collection par son nom (sport)&lt;/p&gt;&lt;p&gt;Soyons sportif, allons à la pêche à l'ID avec Powershell ! &lt;/p&gt;&lt;p style="TEXT-ALIGN: justify"&gt;C'est ici très simple, créons "classiquement" une connexion à la classe &lt;strong&gt;SMS_Collection&lt;/strong&gt;, et filtrons sur le nom de notre collection (ici dans mon exemple "PowerShell Collection")&lt;/p&gt;&lt;p&gt;&lt;span style="COLOR: rgb(0,0,102);font-size:85%;"&gt;$Collection = gwmi -computer $computer -namespace "root\sms\site_001" -class "SMS_Collection" $PoshCollec = $collectionwhere{$_.Name -eq "&lt;strong&gt;PowerShell Collection&lt;/strong&gt;"}&lt;/span&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;a href="http://1.bp.blogspot.com/_Nb_tnJCL_Vw/R_qZAevz9uI/AAAAAAAAAFc/A-2AXK-1_4k/s1600-h/SCCM15.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5186626154403198690" style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_Nb_tnJCL_Vw/R_qZAevz9uI/AAAAAAAAAFc/A-2AXK-1_4k/s400/SCCM15.jpg" border="0" /&gt;&lt;/a&gt; Il ne nous reste plus qu'à adapter le code de WmiExplorer avec comme CollectionID l'ID issu de cet objet, et comme CollectionRule, l'objet que l'on a créé à l'étape précédente :&lt;/p&gt;&lt;p&gt;&lt;span style="COLOR: rgb(0,0,102);font-size:85%;"&gt;$Class = "SMS_Collection"&lt;br /&gt;$Method = "AddMembershipRule"&lt;br /&gt;$CollectionID = &lt;strong&gt;$PoshCollec.CollectionID&lt;/strong&gt;&lt;br /&gt;$filter="CollectionID = '$CollectionID'"&lt;br /&gt;$MC = Get-WmiObject $class -computer $Computer -Namespace "ROOT\SMS\site_001" -filter $filter&lt;br /&gt;$InParams = $mc.psbase.GetMethodParameters($Method)&lt;br /&gt;$InParams.collectionRule = &lt;b&gt;$objColRuleDirect&lt;/b&gt;&lt;br /&gt;$inparams.PSBase.properties select name,Value Format-Table&lt;br /&gt;$R = $mc.PSBase.InvokeMethod($Method, $inParams, $Null)&lt;/span&gt; &lt;/p&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;Voilà le travail : notre ordinateur est à présent inscrit dans la collection "PowerShell Collection".&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;Avec un peu de recherche, et la bonne compréhension des techniques expliquées dans ce message, vous devriez pouvoir créer tout type de script PowerShell autour de SCCM.&lt;strong&gt; Notez aussi que la plupart des codes sont aussi utilisable dans SMS ;)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Ci-dessous un exemple complet des différents extraits :&lt;/p&gt;&lt;p&gt;**************************************************************************&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="COLOR: rgb(0,102,0);font-size:85%;"&gt;## Nom : Script d'import de machine dans SCCM&lt;br /&gt;## Auteur : Antoine Habert &lt;/span&gt;&lt;a href="mailto:devinfra@gmail.com"&gt;&lt;span style="COLOR: rgb(0,102,0);font-size:85%;"&gt;devinfra@gmail.com&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="COLOR: rgb(0,102,0)"&gt;##&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,102);font-size:85%;"&gt;&lt;span style="COLOR: rgb(0,102,0)"&gt;# Variables&lt;/span&gt;&lt;br /&gt;$strTargetMac = "0A:0B:0C:0D:0E:0F"&lt;br /&gt;$strTargetComputerAccount = "NomDeMachine"&lt;br /&gt;$computer = "."&lt;br /&gt;$strTargetCollection = "La collection cible"&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="COLOR: rgb(0,0,102);font-size:85%;"&gt;&lt;span style="COLOR: rgb(0,51,0)"&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="COLOR: rgb(0,0,102);font-size:85%;"&gt;&lt;span style="COLOR: rgb(0,51,0)"&gt;# Create computer in SCCM&lt;br /&gt;&lt;/span&gt;$Class = "SMS_Site"&lt;br /&gt;$Method = "ImportMachineEntry"&lt;br /&gt;$MC = [WmiClass]"\\$Computer\ROOT\SMS\site_001:$Class"&lt;br /&gt;$InParams = $mc.psbase.GetMethodParameters($Method)&lt;br /&gt;$InParams.MACAddress = $strTargetMac&lt;br /&gt;$InParams.NetbiosName = $strTargetComputerAccount&lt;br /&gt;$InParams.OverwriteExistingRecord = $true&lt;br /&gt;$inparams.PSBase.properties select name,Value Format-Table&lt;br /&gt;$objCMComputer = $mc.PSBase.InvokeMethod($Method, $inParams, $Null)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="COLOR: rgb(0,0,102);font-size:85%;"&gt;&lt;span style="COLOR: rgb(0,51,0)"&gt;# Create Collection Rule Direct&lt;/span&gt;&lt;br /&gt;$objColRuledirect = [WmiClass]"\\$Computer\ROOT\SMS\site_001:SMS_CollectionRuleDirect"&lt;br /&gt;$objColRuleDirect.psbase.properties["ResourceClassName"].value = "SMS_R_System"&lt;br /&gt;$objColRuleDirect.psbase.properties["ResourceID"].value = $objCMComputer.resourceID&lt;/span&gt;&lt;/p&gt;&lt;span style="COLOR: rgb(0,0,102);font-size:85%;"&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,102,0)"&gt;# Target Collection connection&lt;/span&gt;&lt;br /&gt;$Collection = gwmi -computer $computer -namespace "root\sms\site_001" -class "SMS_Collection"&lt;br /&gt;$PoshCollec = $collectionwhere{$_.Name -eq $strTargetCollection}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="COLOR: rgb(0,102,0)"&gt;# Add Computer to Target Collection&lt;/span&gt;&lt;br /&gt;$Class = "SMS_Collection"&lt;br /&gt;$Method = "AddMembershipRule"&lt;br /&gt;$CollectionID = $PoshCollec.CollectionID&lt;br /&gt;$filter="CollectionID = '$CollectionID'"&lt;br /&gt;$MC = Get-WmiObject $class -computer $Computer -Namespace "ROOT\SMS\site_001" -filter $filter&lt;br /&gt;$InParams = $mc.psbase.GetMethodParameters($Method)&lt;br /&gt;$InParams.collectionRule = $objColRuleDirect&lt;/p&gt;&lt;p&gt;$inparams.PSBase.properties select name,Value Format-Table&lt;/p&gt;&lt;p&gt;$R = $mc.PSBase.InvokeMethod($Method, $inParams, $Null)&lt;/p&gt;&lt;p&gt;&lt;span style="COLOR: rgb(0,0,0);font-size:100%;"&gt;**************************************************************************&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-2151809309641528104?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/2151809309641528104/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=2151809309641528104' title='4 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/2151809309641528104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/2151809309641528104'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2008/04/powershell-et-sccm-part-2.html' title='PowerShell et SCCM Part 2'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_qTSuvz9rI/AAAAAAAAAFE/POlmKdPMkVI/s72-c/SCCM16.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-865547096128618975</id><published>2008-04-04T17:05:00.006+02:00</published><updated>2008-04-08T11:22:50.482+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Webcast'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Webcast PowerShell en ligne</title><content type='html'>Les webcasts des techdays sont en ligne !&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Hormis le fameux et implacable "demo effect" venu titiller la douce quiétude du déroulement de la session, vous y trouverez normalement quelques infos interessantes sur PowerShell et les solutions infrastructure Microsoft Retrouvez notre présentation &lt;a href="http://www.microsoft.com/france/vision/mstechdays08/WebcastTechNet.aspx?EID=44c2cfea-881f-4f83-bfc9-254bd2b0dfd3"&gt;ici&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Une "Charentaise Edition", mitonnée à la maison (enfin disons sur mon lieu de travail) est disponible sur le site de &lt;a href="http://www.neos-sdi.com/fr/Actualite/Pages/WebcastPowerShellTechDays2008.aspx"&gt;Neos-SDI&lt;/a&gt;, plus complète.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Je vais poster différents tutoriaux liés à cette session (le premier est déjà disponible sous ce message)&lt;br /&gt;&lt;br /&gt;N'hésitez pas à me laisser des commentaires ou des demandes d'infos ici.&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: center"&gt;Sur ce, bon film !&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.homelyscientist.com/wp-content/uploads/2006/05/popcorn.jpg"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://www.homelyscientist.com/wp-content/uploads/2006/05/popcorn.jpg" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-865547096128618975?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/865547096128618975/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=865547096128618975' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/865547096128618975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/865547096128618975'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2008/04/webcast-powershell-en-ligne.html' title='Webcast PowerShell en ligne'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-4986386709589079442</id><published>2008-04-04T15:08:00.036+02:00</published><updated>2008-12-09T20:10:59.368+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WMI'/><category scheme='http://www.blogger.com/atom/ns#' term='System Center'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><title type='text'>PowerShell et SCCM Part 1</title><content type='html'>&lt;div class="Section1"&gt;&lt;span style="font-size:180%;"&gt;PowerShell et SCCM (Part 1)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;ENGLISH version available &lt;a href="http://devinfra-us.blogspot.com/2008/04/sccm-and-powershell-part-1.html"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Introduction&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="Section1" style="text-align: justify;"&gt;Contrairement à SCVMM ou Exchange 2007, SCCM ne propose pas nativement de cmdlets... Par contre, joie, SCCM expose l’ensemble de ses fonctionnalités via WMI. Nous allons voir ensemble comment utiliser les classes, méthodes et propriétés de SCCM avec PowerShell (Ceci est aussi valable pour SMS).&lt;br /&gt;&lt;/div&gt;&lt;h2 class="Section1"&gt;&lt;span style="font-size:130%;"&gt;Avant de commencer&lt;/span&gt;&lt;/h2&gt;&lt;div class="Section1"&gt;Pour vous faciliter la vie, 2 téléchargements sont nécessaires :&lt;br /&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="MsoNormal"&gt;Premièrement, téléchargez le SDK de SCCM fraichement&lt;br /&gt;disponible &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=064A995F-EF13-4200-81AD-E3AF6218EDCC&amp;amp;displaylang=en"&gt;ici&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Prenez aussi &lt;a href="http://thepowershellguy.com/blogs/posh/archive/2007/03/22/powershell-wmi-explorer-part-1.aspx"&gt;le WMI Explorer de MOW&lt;/a&gt; qui va vous faciliter le&lt;br /&gt;&lt;div class="MsoNormal"&gt;code pour SCCM comme nous allons le voir plus loin&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;span style="font-size:130%;"&gt;Premier script&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;Il y a quelques subtilités à connaitre pour pouvoir exploiter les méthodes WMI exposées par SCCM.&lt;br /&gt;&lt;br /&gt;Commençons par découvrir les namespaces, Lancez wmiexplorer sur votre serveur SCCM&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://1.bp.blogspot.com/_Nb_tnJCL_Vw/R_eKAOvz9qI/AAAAAAAAAEs/qkxIZFSDbD0/s1600-h/sccm1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_Nb_tnJCL_Vw/R_eKAOvz9qI/AAAAAAAAAEs/qkxIZFSDbD0/s400/sccm1.jpg" alt="" id="BLOGGER_PHOTO_ID_5185765232503682722" border="0" /&gt;&lt;/a&gt;Un namespace "ROOT\SMS" est présent, au deuxième niveau, vous verrez «ROOT\SMS\inv_schema » que nous allons ignorer pour le moment, et en dessous un namespace normé "ROOT\SMS\site_&lt;i&gt;nomdusite&lt;/i&gt;"&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: left;"&gt;Double-cliquez sur l’instance d’un site pour faire apparaitre les classes :&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_Yoyuvz9eI/AAAAAAAAADI/tAV8Fv6QX_k/s1600-h/SCCM2.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5185376872970843618" style="margin: 0px auto 10px; display: block; cursor: pointer; text-align: center;" alt="" src="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_Yoyuvz9eI/AAAAAAAAADI/tAV8Fv6QX_k/s400/SCCM2.jpg" border="0" /&gt;&lt;/a&gt;Les 570 (!) classes exposées vont apparaitre en bas à gauche. Oui ça fait du monde, mais rassurez vous nous allons pouvoir faire le tri facilement en fonction de notre besoin.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Pour notre premier exemple, nous allons créer un script pour ajouter un ordinateur à une collection. Dans un premier temps, jetons un œil au SDK pour trouver la classe qui nous intéresse.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_YpVOvz9fI/AAAAAAAAADQ/p7aukEUlbcs/s1600-h/SCCM3.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5185377465676330482" style="margin: 0px auto 10px; display: block; cursor: pointer; text-align: center;" alt="" src="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_YpVOvz9fI/AAAAAAAAADQ/p7aukEUlbcs/s400/SCCM3.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Ici, on voit à droite que l’ajout d’un ordinateur passe par la méthode &lt;span style="font-weight: bold;"&gt;« ImportMachineEntry » &lt;/span&gt;de la classe SMS_Site. Le SDK montre généralement des exemples de code VB/C# ou vbs, mais la syntaxe PowerShell diffère comme nous allons le voir plus loin. L’important ici pour nous est d’identifier la classe et la méthode utilisée pour accomplir la tâche.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Dans l’exemple vbscript du SDK, on constate qu’il faut passer par un connection.get pour instancier la classe, puis faire un spawnInstance de la méthode, charger les paramètres requis (macaddress, netbiosname…) puis utiliser ExecMethod..&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;' Connect&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set siteClass = connection.Get("SMS_Site")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set inParams = siteClass.Methods_("ImportMachineEntry"). _&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;inParameters.SpawnInstance_()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;' Add the input parameters.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;inParams.Properties_.Item("MACAddress") = macAddress&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;inParams.Properties_.Item("NetbiosName") = netBiosName&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;inParams.Properties_.Item("OverwriteExistingRecord") = False&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;inParams.Properties_.Item("SMBIOSGUID") = smBiosGuid&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;' Add the computer &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set outParams = &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;connection.ExecMethod("SMS_Site", "ImportMachineEntry", &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;inParams)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;La question qui nous brûle le clavier est donc :&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;comment faire la même chose en PowerShell ?&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;Utilisons wmiExplorer de MoW pour trouver la réponse :&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Nb_tnJCL_Vw/R_Yqf-vz9gI/AAAAAAAAADY/oTxSPEL0mU4/s1600-h/SCCM4.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5185378749871552002" style="margin: 0px auto 10px; display: block; cursor: pointer; text-align: center;" alt="" src="http://3.bp.blogspot.com/_Nb_tnJCL_Vw/R_Yqf-vz9gI/AAAAAAAAADY/oTxSPEL0mU4/s400/SCCM4.jpg" border="0" /&gt;&lt;/a&gt;On double clique sur la classe SMS_Site pour inventorier les propriétés et méthodes de la classe. Vous constaterez qu’à droite, il existe effectivement une méthode appelée « ImportMachineEntry »&lt;br /&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;Double Cliquez sur cette méthode. L’intérêt du WmiExplorer de MoW est qu’il permet d’obtenir des exemples d’utilisation des méthodes WMI :&lt;span style="font-size:0;"&gt;&lt;v:shape id="Image_x0020_5" style="visibility: visible; width: 408pt; height: 486pt;" alt="SCCM5.jpg" type="#_x0000_t75" spid="_x0000_i1031"&gt;&lt;/v:shape&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_Yqyuvz9hI/AAAAAAAAADg/99TQWPkAZ2k/s1600-h/SCCM5.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5185379071994099218" style="margin: 0px auto 10px; display: block; cursor: pointer; text-align: center;" alt="" src="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_Yqyuvz9hI/AAAAAAAAADg/99TQWPkAZ2k/s400/SCCM5.jpg" border="0" /&gt;&lt;/a&gt;Comble du raffinement, il donne un exemple de script et énumère les différents paramètres à renseigner avec leur type (string, booléen,etc..)... Concrètement, il ne nous reste plus qu’à renseigner cet exemple avec les paramètres nécessaires :&lt;/div&gt;&lt;ul&gt;&lt;li&gt;MacAddress (addresse MAC de la machine à importer)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;NetbiosName (Nom de la machine dans l’inventaire SCCM), etc…&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Détaillons un peu ce script pour comprendre le fonctionnement de l’invocation de méthode de cette classe :&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_Yx9Ovz9kI/AAAAAAAAAD4/bdcmwlVU_gs/s1600-h/sccm6.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5185386948964120130" style="margin: 0px auto 10px; display: block; cursor: pointer; text-align: center;" alt="" src="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_Yx9Ovz9kI/AAAAAAAAAD4/bdcmwlVU_gs/s400/sccm6.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Quand on créé notre connexion à la classe SMS_Site et qu’on liste comme ci-dessus l’objet $mc, on voit qu’il n’affiche que « SMS_Site »&lt;br /&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;En faisant un Get_Member, on constate qu’il n’y a pas de méthode « ImportMachineEntry » d’exposée. Cela vient du formatage des objets propres à PowerShell. Pour avoir accès aux propriétés et méthodes de cette classe, il faut passer par la méthode psbase de powershell pour avoir un accès « RAW » à l’objet (Plus d’info sur psbase &lt;a href="http://blogs.msdn.com/powershell/archive/2006/11/24/what-s-up-with-psbase-psextended-psadapted-and-psobject.aspx"&gt;ici&lt;/a&gt;) :&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_YyNuvz9lI/AAAAAAAAAEA/WA0wX1TH_to/s1600-h/SCCM7.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5185387232431961682" style="margin: 0px auto 10px; display: block; cursor: pointer; text-align: center;" alt="" src="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_YyNuvz9lI/AAAAAAAAAEA/WA0wX1TH_to/s400/SCCM7.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;On voit ici que $mc.psbase nous propose effectivement "Methods" et "Properties". Listons maintenant les méthodes :&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_YycOvz9mI/AAAAAAAAAEI/cxURrSFbId4/s1600-h/SCCM8.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5185387481540064866" style="margin: 0px auto 10px; display: block; cursor: pointer; text-align: center;" alt="" src="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_YycOvz9mI/AAAAAAAAAEI/cxURrSFbId4/s400/SCCM8.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;On retrouve effectivement notre méthode ImportMachineEntry. Dans l’exemple vbscript du SDK, on voit qu’il faut faire un spawnInstance pour définir les paramètres de la méthode :&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set inParams = siteClass.Methods_("ImportMachineEntry"). _&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;inParameters.SpawnInstance_()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;inParams.Properties_.Item("MACAddress") = macAddress&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;inParams.Properties_.Item("NetbiosName") = netBiosName&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;inParams.Properties_.Item("OverwriteExistingRecord") = False&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;inParams.Properties_.Item("SMBIOSGUID") = smBiosGuid&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;Pour faire la meme chose &lt;/span&gt;&lt;span style="font-size:100%;"&gt;en PowerShell, regardons l’exemple du script généré par l’outil de MoW :&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-align: left;" align="left"&gt;&lt;span style=";font-family:'Lucida Console';font-size:8;color:black;"   lang="EN-US" &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;$InParams = $mc.psbase.GetMethodParameters(“ImportMachineEntry”)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;$InParams.MACAddress = [string]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;$InParams.NetbiosName = [string]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;$InParams.OverwriteExistingRecord = [boolean]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;$InParams.SMBIOSGUID = [string]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Comme vous pouvez le constater, le code est plutôt simple en PowerShell : ici le GetMethodParameters équivaut au inParameters.SpawnInstance_() du vbscript.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Détaillons un peu ce $InParams :&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_YylOvz9nI/AAAAAAAAAEQ/jF8z3pIig2o/s1600-h/SCCM9.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5185387636158887538" style="margin: 0px auto 10px; display: block; cursor: pointer; text-align: center;" alt="" src="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_YylOvz9nI/AAAAAAAAAEQ/jF8z3pIig2o/s400/SCCM9.jpg" border="0" /&gt;&lt;/a&gt;On voit effectivement nos 4 propriétés MacAddress, NetbiosName, OverwriteExistingRecord, SMBIOSGUID qui sont vides. Notez au passage que le type est bien exposé dans la colonne définition (OverwriteExistingRecord est de type System.Boolean, string pour les autres), et qu’on peut lire et écrire (get;set)&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Bien, renseignons les 3 propriétés voulues (contrairement à ce qui est indiqué, la propriétéMSBIOSGUID n’est pas obligatoire pour ajouter une machine : c’est soit la MacAddress, soit le GUID… Seule l’experience permet de le savoir :) )&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_Yyuuvz9oI/AAAAAAAAAEY/1V6J7WgaVCM/s1600-h/SCCM10.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5185387799367644802" style="margin: 0px auto 10px; display: block; cursor: pointer; text-align: center;" alt="" src="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_Yyuuvz9oI/AAAAAAAAAEY/1V6J7WgaVCM/s400/SCCM10.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;En affichant &lt;span style="font-size:0;"&gt;&lt;/span&gt;$InParams après avoir renseigné les propriétés, on voit bien que l’objet est chargé. &lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;br /&gt;Reste à exécuter la méthode. &lt;span lang="EN-US"&gt;L’exemple Vbscript donnait :&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set outParams = connection.ExecMethod("SMS_Site", "ImportMachineEntry", inParams)&lt;/span&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-align: left;" align="left"&gt;&lt;span style="color: rgb(0, 0, 102);font-family:'Courier New';font-size:9;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;En PowerShell, l’execution se gère comme suit (toujours en suivant simplement l’exemple généré par l’outil de MoW)&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;$mc.PSBase.InvokeMethod($Method, $inParams, $Null)&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_YzMOvz9pI/AAAAAAAAAEg/Fd6ZXymKElg/s1600-h/SCCM11.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5185388306173785746" style="margin: 0px auto 10px; display: block; cursor: pointer; text-align: center;" alt="" src="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_YzMOvz9pI/AAAAAAAAAEg/Fd6ZXymKElg/s400/SCCM11.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Voila notre machine importée dans SCCM, pour l’instant uniquement dans All Systems.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;a href="http://imageshack.us/"&gt;&lt;img alt="Image Hosted by ImageShack.us" src="http://img137.imageshack.us/img137/4646/sccm12pr7.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Reste la troisième étape indiquée par le SDK : Ajouter cette machine à une autre collection.&lt;/p&gt;&lt;p&gt;Nous verrons cela dans la seconde partie de ce post.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Rejouissez-vous ! Vous savez à présent où trouver les différentes tâches liées à SCCM et les convertir en PowerShell.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-4986386709589079442?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/4986386709589079442/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=4986386709589079442' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/4986386709589079442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/4986386709589079442'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2008/04/powershell-et-sccm-part-1-introduction.html' title='PowerShell et SCCM Part 1'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Nb_tnJCL_Vw/R_eKAOvz9qI/AAAAAAAAAEs/qkxIZFSDbD0/s72-c/sccm1.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-1417240776064833988</id><published>2008-03-17T20:58:00.003+01:00</published><updated>2008-03-17T21:14:57.710+01:00</updated><title type='text'>SDK SCCM V4 disponible</title><content type='html'>la v4 (et première release hors Beta) du SDK de SCCM est dispo en téléchargement, juste sorti du four à cette adresse :&lt;br /&gt;&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=064A995F-EF13-4200-81AD-E3AF6218EDCC&amp;amp;displaylang=en" target="_blank"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=064A995F-EF13-4200-81AD-E3AF6218EDCC&amp;amp;displaylang=en&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;j'upload prochainement avec la sortie du webcast de notre session techdays (normalement fin de semaine ou semaine prochaine) des exemples pour créer des cmdlets pour SCCM basés sur ce SDK.&lt;br /&gt;&lt;br /&gt;à dans quelques jours !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-1417240776064833988?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/1417240776064833988/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=1417240776064833988' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/1417240776064833988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/1417240776064833988'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2008/03/sdk-sccm-v4-disponible.html' title='SDK SCCM V4 disponible'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-4846527007803258182</id><published>2008-02-04T11:09:00.000+01:00</published><updated>2008-02-04T11:12:54.254+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Techdays'/><category scheme='http://www.blogger.com/atom/ns#' term='System Center'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Techdays 2008</title><content type='html'>Nous serons présents aux Techdays 2008, avec à la clé une présentation sur PowerShell V1/V2 avec System Center et Windows Server 2008.&lt;br /&gt;&lt;br /&gt;Au programme :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Interface de gestion déléguée pour SCCM&lt;/li&gt;&lt;li&gt;Gestion de projet pour SCVMM&lt;/li&gt;&lt;li&gt;Génération de rapports Word de statistiques Exchange 2007&lt;/li&gt;&lt;li&gt;Gestion asynchrone et remote de PowerShell 2.0&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Et pleins d'autres petites astuces en tout genre :)&lt;/p&gt;&lt;p&gt;&lt;a href="http://galilee.microsoft.fr/TechDays2008/Session.aspx?CellID=44c2cfea-881f-4f83-bfc9-254bd2b0dfd3"&gt;http://galilee.microsoft.fr/TechDays2008/Session.aspx?CellID=44c2cfea-881f-4f83-bfc9-254bd2b0dfd3&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Je posterai ici des exemples tirés de cette présentation. Nous serons aussi présent sur le stand NEos-SDI dans le village infrastructure pour répondre à toute vos questions.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-4846527007803258182?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/4846527007803258182/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=4846527007803258182' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/4846527007803258182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/4846527007803258182'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2008/02/techdays-2008.html' title='Techdays 2008'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-6435971856320625465</id><published>2007-11-06T12:30:00.000+01:00</published><updated>2007-11-06T12:34:06.440+01:00</updated><title type='text'>PowerShell 2.0 CTP disponible !</title><content type='html'>au programme le très attendu Remote-Shell, ainsi que pas mal de petites nouveautés bienvenues :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=60deac2b-975b-41e6-9fa0-c2fd6aa6bc89&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=60deac2b-975b-41e6-9fa0-c2fd6aa6bc89&amp;amp;displaylang=en&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;plus d'info prochainement après avoir tester la bête.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-6435971856320625465?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/6435971856320625465/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=6435971856320625465' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/6435971856320625465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/6435971856320625465'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2007/11/powershell-20-ctp-disponible.html' title='PowerShell 2.0 CTP disponible !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-481933213769389507</id><published>2007-10-23T12:51:00.000+02:00</published><updated>2007-10-23T12:56:09.303+02:00</updated><title type='text'>Un peu d'aide sur les cmdlets?</title><content type='html'>&lt;div align="left"&gt;a l'instar de notre ami SCRIPT56.CHM pour le vbs, il existe un petit chm d'aide sur PowerShell bien sympa :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=3b3f7ce4-43ea-4a21-90cc-966a7fc6c6e8&amp;amp;displaylang=en"&gt;ça se passe ici&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;Son avantage par rapport à la version de PrimalSCript, c'est l'inclusion du guide VBScript TO PowerShell, qui vous donne la version PowerShell de vos fonctions VBScript favorites!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-481933213769389507?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/481933213769389507/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=481933213769389507' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/481933213769389507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/481933213769389507'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2007/10/un-peu-daide-sur-les-cmdlets.html' title='Un peu d&apos;aide sur les cmdlets?'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-8677904951334170677</id><published>2007-10-17T12:02:00.000+02:00</published><updated>2007-10-17T12:17:17.043+02:00</updated><title type='text'>Powershell et la gestion aynchrone d'évènement</title><content type='html'>&lt;div align="justify"&gt;Une question revient souvent dans la bouche de ceux s'essayant au monitoring avec PowerShell dans sa version actuelle : si la gestion d'event WMI est plutôt fastoche, un soucis demeure.&lt;br /&gt;&lt;br /&gt;Le "catch" de l'évènement est prioritaire et empêche toute autre tâche tant que l'évènement n'est pas survenu... ce qui conduit à devoir fermer purement et simplement la session powershell ou la winforms si rien n'arrive, ou en cas d'erreur de code.&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;Il existe aujourd'hui plusieurs solutions pour gérer les évènements de façon asynchrone et nous liberer de ce soucis :&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;la première consiste à faire un trap sur la frappe d'une touche comme dans l'exemple donné par la powershell team ici :&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://blogs.msdn.com/powershell/archive/2007/01/28/working-with-wmi-events.aspx"&gt;http://blogs.msdn.com/powershell/archive/2007/01/28/working-with-wmi-events.aspx&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Une autre plus élégante consiste à utiliser l'excellent snapin PSEventing dispo sur codeplex, qui a le mérite d'être valable pour tout autre type de gestion asynchrone (filesystemwatcher par exemple ) :&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://www.codeplex.com/PSEventing"&gt;http://www.codeplex.com/PSEventing&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;Enfin, pour les plus avant-gardiste, il est possible de gérer des évènements asynchrones en utilisant IronPyhton avec PowerShell, c'est très interessant et ça se passe sur le blog de MoW :&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://thepowershellguy.com/blogs/posh/archive/2007/02/10/using-ironpython-from-powershell-part-1-watch-folder-for-changes-without-blocking-console.aspx"&gt;http://thepowershellguy.com/blogs/posh/archive/2007/02/10/using-ironpython-from-powershell-part-1-watch-folder-for-changes-without-blocking-console.aspx&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;Le mariage entre ironPyhton et PowerShell est très prometteur, et plutôt facile à mettre en oeuvre.&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;avec tout cela, impossible de revoir dans l'avenir des sessions powershell killée abusivement, ni de winforms avec (le programme ne répond pas) dans la barre de titre !&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-8677904951334170677?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/8677904951334170677/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=8677904951334170677' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/8677904951334170677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/8677904951334170677'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2007/10/powershell-et-la-gestion-aynchrone.html' title='Powershell et la gestion aynchrone d&apos;évènement'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-4777284654370553272</id><published>2007-09-26T12:10:00.001+02:00</published><updated>2007-09-26T15:41:44.226+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDE'/><category scheme='http://www.blogger.com/atom/ns#' term='winforms'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='editeur'/><title type='text'>Nouvelle version AdminScriptEditor</title><content type='html'>&lt;div align="justify"&gt;&lt;a href="http://www.adminscripteditor.com/"&gt;AdminScriptEditor&lt;/a&gt; débarque dans sa version 3.1.&lt;br /&gt;&lt;br /&gt;Au programme des nouveautés, une fonctionnalité très attendue (du moins, par moi-même) : la génération de forms en PowerShell !&lt;br /&gt;&lt;br /&gt;Un designer à la visual studio permet de créer son interface, et celle ci est directement générée en code powershell. Simple, efficace, pratique.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Le packager de script (qui permet à la fois de compiler et crypter vos scripts dans un executable) fonctione maintenant avec powershell.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Un très bon point pour ce déjà excellent éditeur.&lt;br /&gt;&lt;br /&gt;A noter que nos collègues de chez &lt;a href="http://www.powershell-scripting.com/"&gt;PowerShell-Scripting.com&lt;/a&gt; propose sur leur site un petit script permettant de convertir des forms C# en PowerShell. C'est encore en travaux mais c'est gratuit ! (inscription obligatoire pour avoir accès au code) :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://powershell-scripting.com/index.php?option=com_content&amp;amp;task=view&amp;amp;id=135&amp;amp;Itemid=80"&gt;c'est ici que ça se passe&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-4777284654370553272?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/4777284654370553272/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=4777284654370553272' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/4777284654370553272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/4777284654370553272'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2007/09/nouvelle-version-adminscripteditor.html' title='Nouvelle version AdminScriptEditor'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-3971825691025874524</id><published>2007-09-17T15:52:00.000+02:00</published><updated>2007-09-18T11:33:04.488+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WorkFlow'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Intonomi : Workflow PowerShell à la française</title><content type='html'>&lt;div align="justify"&gt;Dans ma recherche de l'outil idéal pour gérer l'automatisation de process par scripting, j'ai pu récemment avoir une démonstration de la solution &lt;strong&gt;INTONOMI&lt;/strong&gt; de &lt;a href="http://www.intoan.com/"&gt;Intoan Technology&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.intoan.com/templates/intoan_business_final/images/intoan_banner_2.jpg" border="0" /&gt;&lt;br /&gt;Intoan est une jeune société française en pleine expansion qui se focalise sur la gestion de process et cette solution clé en main qu'est &lt;strong&gt;INTONOMI. &lt;/strong&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;strong&gt;INTONOMI &lt;/strong&gt;se positionne comme une solution d'automatisation de processus liés au postes de travail, orientée ITIL.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;strong&gt;Verdict ?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Une présentation en face à face très instructive, menée par des personnes véritablement passionnées par leur technologie et la problématique d'automatisation. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;A l'utilisation de leur outil, il s'avère que le moteur de workflow d'&lt;strong&gt;INTONOMI&lt;/strong&gt; peut aller encore bien plus loin que la seule gestion des process liées aux postes de travail : il s'agit d'une veritable boite à tout faire, mettant le scripting (VBScript mais aussi et surtout PowerShell) au coeur de l'industrialisation de process IT dans l'entreprise.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;La gestion des workflow est bien plus puissante que FullArmor (encore au stade Beta il est vrai, je reste donc indulgent :) ), avec notamment une distinction Process Client et Process Serveur au sein d'un même workflow, ce qui rend la solution particulièrement souple à l'usage.&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;center&gt;&lt;a href="http://img265.imageshack.us/img265/7259/intonomiworkflowwg8.jpg" target="_blank"&gt;&lt;img alt="Free Image Hosting at www.ImageShack.us" src="http://img265.imageshack.us/img265/7259/intonomiworkflowwg8.th.jpg" border="0" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;/div&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;em&gt;Exemple de workflow Client (à gauche de la ligne) et serveur (à droite) pour la gestion des mappages réseaux&lt;/em&gt;&lt;/p&gt;&lt;div align="justify"&gt;Les interconnexions entre les différentes briques du workflow sont aussi particulièrement poussées, avec entre autre la vision des dépendances entre les briques qui se font automatiquement, cela facilite énormément la vie.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Une palette de composant "built-in" est proposée, fournissant de nombreuses infos tels que l'audit d'un poste, la collecte d'information d'une base de donnée, l'analyse d'espace disques, etc...&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Le fait de pouvoir inserer ses propres scripts dans le processus rend la solution totalement ouverte.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Autre point interessant, la possibilité de distribuer des services directement sur le poste de travail de l'utilisateur (via un agent), lui offrant ainsi une palette d'outil en libre service.&lt;/div&gt;&lt;br /&gt;&lt;p align="justify"&gt;L'intégration de PowerShell n'est pas une simple touche cosmetique, notre langage de scripting favoris est véritablement bien exploité et ouvre pas mal de piste pour les passionnés de l'automatisation tels que votre serviteur. &lt;/p&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;center&gt;&lt;a href="http://img214.imageshack.us/img214/8070/intonomiscriptgw7.jpg" target="_blank"&gt;&lt;img alt="Free Image Hosting at www.ImageShack.us" src="http://img214.imageshack.us/img214/8070/intonomiscriptgw7.th.jpg" border="0" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;center&gt;&lt;em&gt;Intégration d'un script PowerShell dans le WorkFlow&lt;/em&gt; &lt;p&gt;&lt;/p&gt;&lt;/center&gt;&lt;p align="justify"&gt;&lt;br /&gt;Autre très bon point, InToan propose une virtual machine clé en main pour tester la solution, ce qui est assez rare pour être salué. La solution est en pleine évolution, pour avoir eu vent des prochaines mises à jour, tout cela va vraiment dans le bon sens. &lt;/p&gt;&lt;div align="justify"&gt;N'hésitez franchement pas à tester cette solution: sa nature modulaire et ouverte en fait, non pas un concurrent, mais plutôt un complément idéal de nombreuses solutions du marché comme SMS,MOM, etc... &lt;/div&gt;&lt;p align="justify"&gt;Elle peut être vu comme une bonne alternative pour les petites et moyenne entreprises souhaitant automatiser la gestion de son système d'information sans avoir les moyens d'investir dans de grosses solutions coûteuses, Intonomi étant plutôt bon marché.&lt;/p&gt;&lt;div align="justify"&gt;Tout n'est bien sûr pas encore parfait, il manque encore quelques fonctions pour avoir une solution répondant à tout les besoins (adhérence Active Directory pour la gestion des utilisateurs et administrateurs, gestion d'un catalogue perso de composants...), mais la plupart sont en préparation pour la future version du logiciel, et rien n'est véritablement bloquant.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;Un très bon outil à mon goût! &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;...et une solution innovante française, ne boudons pas notre plaisir ;)&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-3971825691025874524?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/3971825691025874524/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=3971825691025874524' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/3971825691025874524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/3971825691025874524'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2007/09/intonomi-workflow-la-franaise.html' title='Intonomi : Workflow PowerShell à la française'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-3416397844536206814</id><published>2007-09-11T10:28:00.000+02:00</published><updated>2007-09-12T11:34:59.453+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WorkFlow'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Full Armor Workflow Studio</title><content type='html'>&lt;div align="justify"&gt;Le scripting en général, et PowerShell en particulier, permettent d'automatiser les différents process d'exploitation et d'administration des composants de l'infrastructure.&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Une fois un maximum de tâches automatisées, un besoin se fait sentir : comment gérer l'ensemble d'un processus par script, simplement ?&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Par exemple, un script auditant l'espace libre d'un serveur de messagerie : comment gérer facilement l'envoi d'un mail au support en cas de surcharge ? peut on directement dans ce mail proposer des actions à l'administrateur pour la résolution de l'incident ?&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Pour réaliser ce type de tâche, il nous faut un moteur de workflow permettant de gérer le cycle entier de résolution.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;C'est ici que &lt;a href="http://www.fullarmor.com/"&gt;FullArmor&lt;/a&gt; arrive, avec leur air dégagé et leurs excellent outil : &lt;strong&gt;WorkFlow Studio&lt;/strong&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.fullarmor.com/documents/images/WFS_Graphic_20060522.jpg" border="0" /&gt; &lt;p align="center"&gt;&lt;a href="http://www.fullarmor.com/products-workflow-studio.htm"&gt;Full Armor WorkFlow Studio&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Surtout connu pour leur solution de gestion de GPO, ils nous gratifient ici d'un outil original qui m'a particulièrement emballé.&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;WorkFlow Studio, c'est la puissance de &lt;a href="http://wf.netfx3.com/"&gt;WorkFlow Foundation&lt;/a&gt; au service de PowerShell. Cet outil vous permet de créer très facilement un workflow basé sur des scripts (PowerShell et vbs), permettant un enchainement de tâches pour aboutir à un process complet.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;En effet, de nombreuses tâches sont fournies "clé en main", comme l'envoi de mail, la publication de site web, la gestion de virtual machine, etc.. (d'autres sont à venir)&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;L'avantage de ce type de système est double !&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;Il permet de donner une vision plus clair d'une tâche automatisée : plutôt que d'avoir un gros script, vous avez l'ensemble de votre process découpée en tâche simple, facilement visible dans le schéma du workflow. C'est le moteur de workflow qui se charge de gérer les enchainements, les conditions, sans avoir à coder la moindre ligne.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;Il permet de planifier ces process très simplement, et d'avoir tout le suivi du déroulement des différentes briques sans avoir à coder la moindre ligne : le journal d'execution du workflow renseigne sur le bon ou mauvais déroulement de chaque brique dans une base.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Les possibilités sont véritablement énormes. Plusieurs outils proposent un moteur de workflow pour gérer des tâches (principalement dans les solutions de gestion de parc basée sur ITIL), mais celui ci à le mérite d'être clairement orienté powershell... et d'être particulièrement simple à comprendre!&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Laissez vous séduire par la version démo, vous ne le regretterez pas. Je reviendrai sur la mise en pratique de cet outil prochainement.&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-3416397844536206814?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/3416397844536206814/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=3416397844536206814' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/3416397844536206814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/3416397844536206814'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2007/09/full-armor-workflow-studio.html' title='Full Armor Workflow Studio'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-2938912532590887648</id><published>2007-09-10T18:04:00.001+02:00</published><updated>2007-09-12T11:32:07.563+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Bien débuter avec PowerShell</title><content type='html'>PowerShell, c'est beau, c'est neuf, c'est objet !&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;Mais pour ceux d'entre nous n'ayant pas l'habitude des Shells type Unix, c'est un peu destabilisant, car entre VBS et PowerShell, c'est le jour et la nuit technologique.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Pour vous y retrouver et partir du bon pied, rien ne vaut un bon tutorial. Et qui dit bon tutorial, dit tutorial en Français, car il ne s'agit pas ici de comprendre des termes techniques, mais aussi toute une philosophie.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="center"&gt;La communauté francophone est active !&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Pour commencer, nos amis de &lt;a href="http://powershell-scripting.com/"&gt;PowerShell-Scripting&lt;/a&gt;, LA communauté française de référence, vous propose plusieurs tutoriaux sur PowerShell ainsi qu'un forum où glisser vos questions : ça se passe &lt;a href="http://powershell-scripting.com/index.php?option=com_content&amp;task=category&amp;amp;sectionid=4&amp;id=22&amp;amp;Itemid=73"&gt;ici&lt;/a&gt;. Leur site propose des news très interessantes, et même des offres d'emplois pour les scripteurs motivés, aucune raison de s'en priver.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;Laurent Dardenne de la communauté &lt;a href="http://www.developpez.net/forums/"&gt;Developpez.net&lt;/a&gt; a pondu un très bon tutorial pour les débutants &lt;a href="http://laurent-dardenne.developpez.com/articles/Windows/PowerShell/PremiereApproche/"&gt;ici&lt;/a&gt; , ne vous en privez pas il est très clair sur les notions de bases tels que le pipelining.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;De nombreux liens (en anglais) pour aller plus loin dans l'apprentissage sont disponible sur leur site à &lt;a href="http://www.developpez.net/forums/showthread.php?t=299867"&gt;cet endroit&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;Vous pouvez aussi jeter un oeil au &lt;a href="http://www.microsoft.com/france/technet/itsshowtime/sessionh.aspx?videoid=404"&gt;WebCast des Techdays 2007 &lt;/a&gt;où nous avons, avec l'ami Cedric Bravo et notre dev préféré Gregory Schiro, présenté quelques exemples d'applications de PowerShell en entreprise.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;Envie de connaitre la correspondance entre des commandes VBSCRIPT et PowerShell ? Microsoft fourni des exemples indispensables pour retrouver ses petits : &lt;a href="http://www.microsoft.com/technet/scriptcenter/topics/winpsh/convert/default.mspx"&gt;un petit tour sur cette page&lt;/a&gt; (en anglais cette fois-ci)&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-2938912532590887648?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/2938912532590887648/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=2938912532590887648' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/2938912532590887648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/2938912532590887648'/><link rel='alternate' type='text/html' href='http://devinfra.blogspot.com/2007/09/bien-dbuter-avec-powershell.html' title='Bien débuter avec PowerShell'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4925101055280698045.post-5985615622684536449</id><published>2007-09-10T16:53:00.001+02:00</published><updated>2007-09-12T11:34:21.371+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WMI'/><category scheme='http://www.blogger.com/atom/ns#' term='CODE GENERATOR'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='ADSI'/><title type='text'>Generateur de code PowerShell</title><content type='html'>&lt;div align="center"&gt;&lt;/div&gt;&lt;div align="justify"&gt;Tout bon scripteur qui se respecte ayant un serieux penchant pour la glandouille, automatiser des tâches ne nous suffit pas : si le code peut lui même être généré automatiquement, on frise le paradis.&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div align="justify"&gt;PowerShell bousculant nos petites habitudes acquises avec le VBS, un petit coup de main pour débiter du code ne fait pas de mal. Nous allons donc faire un point sur les outils nous permettant de générer du code PowerShell.&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;strong&gt;Vous souhaitez générer du code PowerShell pour WMI ?&lt;/strong&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;L'inégalable &lt;a href="http://thepowershellguy.com/blogs/posh/"&gt;MOW&lt;/a&gt; nous à gratifié d'un sympathique générateur de code WMI, lui-même codé en PowerShell, ce qui est plutôt classe : &lt;strong&gt;WMIEXPLORER&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://thepowershellguy.com/blogs/posh/WindowsLiveWriter/PowerShellWMIExplorerPart1_14306/InAction_thumb%5B2%5D.png" border="0" /&gt; &lt;div align="center"&gt;&lt;a href="http://thepowershellguy.com/blogs/posh/archive/2007/03/22/powershell-wmi-explorer-part-1.aspx"&gt;MOW PowerShell WMI Explorer&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Encore un peu buggé dû à son statut de béta, mais vraiment pratique. &lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;dans la même veine, vous trouverez chez Rob van der Woude un petit utilitaire en HTA rendant le même service :&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.robvanderwoude.com/pictures/wmigen.jpg" border="0" /&gt; &lt;p align="center"&gt;&lt;a href="http://www.robvanderwoude.com/wmigen.html"&gt;http://www.robvanderwoude.com/wmigen.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="left"&gt;Moins complet que l'oeuvre de MOW, mais plus légé.&lt;/p&gt;&lt;div align="left"&gt;&lt;strong&gt;Et quid des BDD, ADSI et autres XML ?&lt;/strong&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Je suis tombé recemment sur cet éditeur que je ne connaissait pas : &lt;strong&gt;AdminScriptEditor&lt;/strong&gt; (ASE)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.adminscripteditor.com/editor/screenshots/images/WMIwizard21.jpg" border="0" /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;a href="http://www.adminscripteditor.com/"&gt;http://www.adminscripteditor.com/&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;Plus qu'un simple éditeur, il dispose de nombreuses fonctions plutôt bien vu tels que la génération de formulaire, le générateur de script de logon, la possibilité de packager les scripts en EXE cryptés etc... (plus d'infos sur le site, des vidéos instructives sont à dispo)&lt;/p&gt;&lt;p align="justify"&gt;Surtout, il propose 4 assistants vraiment pertinents qui permettent de générer du code PowerShell pour :&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;Des requêtes ADSI&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;Des fichiers XML&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;Des accès aux bases de données&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;et bien sûr WMI&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;Plutôt bien pensé, en 3 clics vous définissez votre requêtes, reste à cliquer sur "Insert" et vous voilà avec votre requêtes en PowerShell dans l'éditeur. Une aide bien sympathique ! Faites l'essai du produit par curiosité, seuls quelques fonctions sont indisponibles (packaging des scripts par exemple) &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4925101055280698045-5985615622684536449?l=devinfra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra.blogspot.com/feeds/5985615622684536449/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4925101055280698045&amp;postID=5985615622684536449' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4925101055280698045/posts/default/5985615622684536449'/><link r
